【发布时间】:2015-08-07 12:17:30
【问题描述】:
是否可以将像select x from Clazz x 这样的JPQL 字符串转换为CriteriaQuery 对象,我可以在其中检查查询的根是否为Clazz(使用CriteriaQuery.getRoots)或以不同的方式执行相同的操作(不转换进入CriteriaQuery)?
JPA 文档非常简单(例如,CriteriaBuilder 的类注释说“返回 CriteriaBuilder 的实例以创建 CriteriaQuery 对象。” - 10 或 20 个句子和更多的引用不会受到伤害)。因此,它没有提及任何关于逆转CriteriaQuery -> TypedQuery 进程的内容。
jpa - transforming jpql join query to criteria api 和 How to convert a JPQL with subquery to Criteria API equivalent? 覆盖具体案例。我正在寻找通用的编程解决方案。
指定与CriteriaBuilder.createQuery(Class) 的参数不匹配的类型会导致IllegalArgumentException,但这更像是一种解决方法,并且不允许使用一组非常有用的方法进行调查。
【问题讨论】: