java - java spring中如何将对象转换为字符串

标签 java sql spring spring-data-jpa converters

我想通过 bedType 在 spring data jpa 中搜索。但是, bedType 不是字符串。不是String bedType,而是BedType bedType(Object)。这是我的存储库

    @Query("select a,b.bedType,b.roomCategory from RoomDetail a left outer join RoomMaster b on a.roomId = b.id where lower(b.bedType) like %:bedType%")
<Page>RoomDetail findByBedType(
        @Param("bedType") BedType bedType,
        Pageable paging);

FindRoomStatus.Java

public class FindRoomStatus {

private BedType bedType;

public BedType getBedType() {
    return bedType;
}

public void setBedType(BedType bedType) {
    this.bedType = bedType;
}

在我的 Controller 中,出现错误

String cannot be a converted to BedType

data = roomDetailRepository.findByBedType(findRoomStatus.getBedType().toString(), paging);

这是 BedType.Java

public class BedType implements Serializable{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY, generator = "bed_type_seq")
@SequenceGenerator(name = "bed_type_seq", sequenceName = "bed_type_id_bed_type_seq", allocationSize = 1, initialValue = 1)
private int id;

@Column(name = "bed_type_name", length = 20)
private String bedTypeName;

@JsonIgnore
@Column(name = "status", length = 10)
private String status;

public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

public String getBedTypeName() {
    return bedTypeName;
}

public void setBedTypeName(String bedTypeName) {
    this.bedTypeName = bedTypeName;
}

public String getStatus() {
    return status;
}

public void setStatus(String status) {
    this.status = status;
}

列出房间状态,在此列表中,我想按床型查找

 {
            "id": 105,
            "roomId": 43,
            "floor": "1",
            "roomNumber": "001",
            "description": "Normal",
            "status": "Vacant Clean"
        },
        {
            "id": 11,
            "bedTypeName": "King size"
        },
        {
            "id": 39,
            "categoryName": "President Suite"
        }

最佳答案

您在查询中使用 LIKE 关键字,但接受 BedType 对象作为查询中的参数。您正在将 String 作为参数从 Controller 发送。这就是问题。 toString 方法将给出对象的字符串表示形式。

您可以做的是将参数更改为接受bedTypeNameString,例如:

@Query("select a,b.bedType,b.roomCategory from RoomDetail a left outer 
join RoomMaster b on a.roomId = b.id where lower(b.bedType.bedTypeName) like 
%:bedTypeName%")
<Page>RoomDetail findByBedType(
    @Param("bedTypeName") String bedTypeName,
    Pageable paging);

从 Controller 中,

data = roomDetailRepository.findByBedType(findRoomStatus.getBedType().getBedTypeName(), 
paging);

关于java - java spring中如何将对象转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59242468/

相关文章:

java - 在哪里/如何在 ListView 适配器中取消注册广播接收器?

java - 如何将 uuid 添加到 log4j 以登录文件?

SQL Server 查询试运行

spring - 通过spring注解的方式给出bean id

java - Spring Tomcat和静态资源和mvc :resources

java - 将 Java 映射枚举键转换为映射字符串键

javascript - React native JAVA_HOME 设置为无效目录

mysql - 如何使用两列得到第三列的结果

sql - 在 SQL 中对分层文本进行排序

java - Hibernate:删除前检查外键约束违规?