Java JPA布尔字段数据库

时间:2018-10-05 13:47:55

标签: java hibernate jpa criteria

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

 public class Client {
    private Boolean supervisor;
 }

使用Criteria进行查询时,例如:p4 = cb.isTrue(root.get(“ supervisor”)),JPA返回错误client0_.supervisor = 1-错误:字符串“ 1”的转换错误[SQLState :22018,ISC错误代码:335544334]。我该怎么解决?

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

2 个答案:

答案 0 :(得分:1)

用给出的信息很难说,但是可能发生的是您的JPA实现处于休眠状态,而可能处于休眠状态Firebase,因此您改用其他方言(例如H2方言),并且该方言可能不能正确处理布尔数据类型。

您需要首先验证是否确实存在这种情况,如果是,则需要找到或实现用于Firebase的Hibernate方言来解决此问题。当然,这不仅仅是调整设置,还需要做更多的工作,但这不需要费力的工作,请在此处查看示例:

HSQL + Hibernate Exception: Wrong column type: Found: double, expected: float

答案 1 :(得分:0)

我设法解决了这个问题,不是通过Criteria而是通过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