java - JPQL 查询不为空

标签 java jpa jpql

我不明白下面的 JPQL 查询有什么问题:

StringBuilder sb = new StringBuilder("FROM FaPrimaryDocument AS t WHERE (t.debitAccount.id = :id or t.creditAccount.id = :id) " +
                "AND t.debitAccount IS NOT NULL AND t.creditAccount IS NOT NULL ");
Query q = em.createQuery(sb.toString(), FaPrimaryDocument.class)
                .setParameter("id", id);

List<FaPrimaryDocument> transactions = q.getResultList();

enter image description here

以上查询返回带有 debitAccount/creditAccount = null 的行。我怎样才能更改它以便不返回带有 debitAccount/creditAccount = null

的行

最佳答案

我尝试了一些不同的方法。结果如何:

"SELECT t " +
                "FROM FaPrimaryDocument AS t " +
                "JOIN t.debitAccount AS da " +
                "JOIN t.creditAccount AS ca " +
                "WHERE " +
                    "((da.id = :id) OR (ca.id = :id)) " ;

关于java - JPQL 查询不为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34329311/

相关文章:

java - 共享 EntityManager 上下文中使用的事务的范围是什么?

java - TopLink JPA 子项在许多 SQL 子项调用中获取结果

java - JPQL语句查询中无效的未绑定(bind)变量 "serial_number"

java - Hibernate 加载延迟列表的延迟初始化异常

java - 正则表达式匹配url

java - 如何允许从 shutdownHook 登录任何类

java - 如何避免 Hibernate 中实体属性的序列化

java - 在 Google Compute Engine VM 上执行 Java 文件

java - 来自单个 validator 的集合验证

java - 使用 SUM 和 COUNT 的 JPQL native 查询