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