混合 JPQL 和 CriteriaQuery
Posted
技术标签:
【中文标题】混合 JPQL 和 CriteriaQuery【英文标题】:Mixing JPQL and CriteriaQuery 【发布时间】:2011-02-22 19:47:03 【问题描述】:JPQL 和CriteriaQuery
可以混用吗?
我有一个String
,其中包含 JPQL 中的 where 条件和一个已经构建并从其他地方获得的 CriteriaQuery
。我想知道是否可以将 where 条件 String
添加到 CriteriaQuery.where()
。 where 条件可以是多个条件“and-ed”/“or-ed”在一起。
我可以在不解析 where 条件 String
的情况下执行此操作吗?
【问题讨论】:
【参考方案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 中可用(将来的某个时间)。
【讨论】:
以上是关于混合 JPQL 和 CriteriaQuery的主要内容,如果未能解决你的问题,请参考以下文章