java - OpenJPA 将 1 <> 1 添加到 WHERE 子句

标签 java jpa openjpa

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/

相关文章:

java - Websphere 上的 JPA 问题——在 Tomcat 上运行良好

java - 为什么 Java 会提示未初始化的变量,即使导致其初始化的所有可能路径都已被处理?

java - JPA事务提交奇怪的行为

java - Java 中的重复排列(字符串的形式为 : 00001112222)

java - JPA - 定义多列唯一约束

java - 以编程方式为 hibernate 提供数据源

postgresql - JPA SequenceGenerator 和 GeneratedValue : name/generator property unique only per class?

java - 如果应用程序 srv 隔离级别设置为 READ COMMITTED,是否会发生 OptimisticLockException?

java - 在XUL中设置java类(jar文件)的类路径,通过javascript访问

java - 三重 DES Java 不工作