2015-10-19 47 views
1

OpenJPA正在为我的WHERE子句添加“1 <> 1”。任何想法为什么?我下面列出OpenJPA在WHERE子句中添加1 <> 1

//Criteria Query 
_PredicateList.add(
    _CriteriaBuilder.equal(
      _RootClass.get(Test_.Data) 
      ,"XXX"                      ) 
     );  

//sql snippet that is generated 
t0.Data= 'XXX' AND 1 <> 1 

回答

1

一些示例代码& SQL您正在构建的条件有可能没有计算到真正的机会和OpenJPA检测到它在查询设置时间。这可能是由于比较不兼容的类型(在你的情况下)或其他情况下的许多不同的原因造成的(例如,非空列上的“null”条件,与大于允许的最大长度的字符串常量的比较列等)。

为什么这么奇怪的状况?可能会向开发人员暗示查询中存在逻辑错误(并且不会因运行时异常而失败)。出于性能原因,可能性较小。另外,并非所有SQL方言都支持布尔文字。