我们遇到了在MSSQL DB上使用LocalTime的查询问题
我们的实体有字段
@Column(name = "receipt_time", nullable = false)
private LocalTime receiptTime;
一切正常,除了查询时,即使用spring-data-jpa查询
boolean existsByReceiptTime(LocalTime time);
返回The data types time and datetime are incompatible in the equal to operator.
我尝试用sendTimeAsDateTime解决,但它没有用。 url字符串未被接受。然后我尝试使用一些AttributeConverters无济于事。还有其他可能的建议吗?注意:我真的很喜欢使用LocalTime类型。
更新: 生成的查询是
Hibernate: select TOP(?) receipt0_.id as col_0_0_ from receipt receipt0_ where receipt0_.receipt_time=?' is the query.
答案 0 :(得分:2)
解决方案是编写自定义属性转换器。它可能是Microsoft SQL Server特定的解决方案。
@Converter(autoApply = true)
public class LocalTimeConverter implements AttributeConverter<LocalTime, String> {
@Override
public String convertToDatabaseColumn(LocalTime time) {
return time.toString();
}
@Override
public LocalTime convertToEntityAttribute(String time) {
return LocalTime.parse(time);
}
}