是否可以混用JPQL和CriteriaQuery
?
我有一个String
,其中包含JPQL中的where条件和已构建并从其他位置获取的CriteriaQuery
。我想知道我是否可以将String
的条件添加到CriteriaQuery.where()
。 where条件可以是多个条件“and-ed”/“or-ed”在一起。
我可以在不解析where条件String
的情况下执行此操作吗?
答案 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等效项”