我在模型中创建了一个这样的属性:
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。
答案 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