Java JPA 布尔字段数据库



我在我的模型中创建了一个这样的属性:

public class Client {
private Boolean supervisor;
}

使用条件执行查询时,例如:p4 = cb.isTrue (root.get ("supervisor"((,JPA 返回错误 client0_.supervisor = 1 - 错误:字符串"1"的转换错误 [SQLState: 22018, ISC 错误代码: 335544334]。我该如何解决这个问题?

我的RDBMS是Firebird,主管列是布尔类型。

根据给出的信息很难分辨,但可能发生的情况是,您的 JPA 实现是休眠的,并且休眠可能没有 Firebase 的方言,因此您正在使用其他方言(如 H2 方言(,并且此方言可能无法正确处理布尔数据类型。

您需要首先验证情况是否确实如此,如果是这样,则需要找到或实现 Firebase 的 Hibernate 方言来解决此问题。 这当然不仅仅是调整设置更多的工作,但它不需要付出巨大的努力,请看这里的例子:

HSQL + 休眠异常:错误的列类型:找到:双精度,预期:浮点

我已经设法解决了这个问题,不是用标准,而是用JPQL,如下所示:

select     new Extensionista(e.id, e.name) 
from       Extensionista e 
join       e.localControle lc 
where      lc.id =: id 
and        e.cpf is not null 
and        e.status = 'T' 
and        e.supervisor = 'true'
order by   e.name

最新更新