OpenJPA 正在将“1 <> 1”添加到我的 WHERE 子句中。知道为什么吗?我在下面列出了一些示例代码和 Sql
//Criteria Query
_PredicateList.add(
_CriteriaBuilder.equal(
_RootClass.get(Test_.Data)
,"XXX" )
);
//sql snippet that is generated
t0.Data= 'XXX' AND 1 <> 1
最佳答案
您正在构建的条件可能没有机会评估为true,并且 OpenJPA 在查询设置时检测到它。这可能是由于比较的类型不兼容(在您的情况下)或其他情况下的多种不同原因引起的(即非空列上的“为空”条件、与大于该允许的最大长度的字符串常量的比较)列等)。
为什么会出现这样奇怪的情况?可能是为了向开发人员提示查询中存在逻辑错误(并且不会因运行时异常而失败)。出于性能原因,可能性较小。此外,并非所有 SQL 方言都支持 boolean 文字。
关于java - OpenJPA 将 1 <> 1 添加到 WHERE 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33223973/