混合JPQL和CriteriaQuery

时间:2011-02-22 19:47:03

标签: java jpa

是否可以混用JPQL和CriteriaQuery

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

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

3 个答案:

答案 0 :(得分:2)

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

我不知道其他任何实现。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

请参阅http://www.datanucleus.org/products/accessplatform/jpa/jpql_criteria.html

上的“标准查询的JPQL等效项”