我无法理解以下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();

java - JPQL查询不为空-LMLPHP

上面的查询返回带有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)) " ;

10-07 12:57
查看更多