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
答案 0 :(得分:1)
您正在构建的条件可能无法评估 true ,OpenJPA会在查询设置时检测到它。这可能是由于比较不兼容的类型(在您的情况下)或在其他情况下由于多种不同原因(即非空列上的“为空”条件,与大于允许的最大长度的字符串常量进行比较)专栏等。)。
为什么这么奇怪的情况?可能会向开发人员暗示查询中存在逻辑错误(并且不会因运行时异常而失败)。出于性能原因,不太可能。此外,并非所有SQL方言都支持布尔文字。