【问题标题】:JPQL query IS NOT NULLJPQL 查询不为空
【发布时间】:2016-03-23 14:38:14
【问题描述】:

我不明白关注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();

以上查询返回带有debitAccount/creditAccount = null 的行。如何更改它以便不返回带有debitAccount/creditAccount = null的行

【问题讨论】:

  • 查询好像是正确的。
  • 等一下。我会发布输出
  • @Milkmaid,已更新
  • 与上述相同的查询是什么? (没有发布 SQL)JPQL 是一回事(你的错误地省略了 SELECT)。 SQL 是另一回事。
  • @Tiny JPQL 由 JPA 规范定义(与 Hibernate 文档相反)。 “SELECT {alias}”是强制性的。如果您关心可移植性和遵守标准,这就是全部内容。

标签: java jpa jpql


【解决方案1】:

我尝试了一些不同的方法。这里是如何解决的:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-17
    • 2016-08-11
    • 2012-12-29
    • 2021-10-09
    • 2019-03-15
    • 2011-06-12
    • 2017-03-10
    • 2013-11-13
    相关资源
    最近更新 更多