【问题标题】:Mixing JPQL and CriteriaQuery混合 JPQL 和 CriteriaQuery
【发布时间】:2023-04-10 06:19:01
【问题描述】:

JPQL 和CriteriaQuery 可以混用吗?

我有一个String,其中包含 JPQL 中的 where 条件和一个已经构建并从其他地方获得的 CriteriaQuery。我想知道是否可以将 where 条件 String 添加到 CriteriaQuery.where()。 where 条件可以是多个条件“and-ed”/“or-ed”在一起。

我可以在不解析 where 条件 String 的情况下执行此操作吗?

【问题讨论】:

    标签: java jpa


    【解决方案1】:

    如前所述,JPA 中没有通用规范(据我所知)。然而,在实现中,可能存在将查询转换为表达式或限制的方法。在 TopLink(可能是 EclipseLink)中,Expression.postfixSQL 和 prefixSQL 是最接近的方法。 Hibernate 有 Restrictions.sqlRestriction。

    我不知道任何其他实现。

    【讨论】:

      【解决方案2】:

      您可以做的一件事是将 CriteriaQuery 转换为 JPQL 并将字符串的两个 WHERE 部分连接起来。

      请参阅http://www.datanucleus.org/products/accessplatform/jpa/jpql_criteria.html 上的“JPQL 等效的条件查询”

      【讨论】:

        【解决方案3】:

        如果有办法在 JPA 1.0 或 2.0 中执行此操作,我不知道,但 this 在另一个问题中的回答表明混合 JPQL 和 CriteriaQuery 将在 JPA 2.1 中可用(将来的某个时间)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-05-10
          • 2021-11-29
          • 1970-01-01
          • 1970-01-01
          • 2012-04-17
          • 2010-09-16
          • 2017-05-18
          相关资源
          最近更新 更多