是否可以将 select x from Clazz x
这样的 JPQL 字符串转换为 CriteriaQuery
对象,我可以在其中检查查询的根是否为 Clazz
code> 或不(使用 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
,但这更多的是一种解决方法,并且不允许一组非常有用的研究方法。
最佳答案
不,不可能,或者至少没有标准化的方法。
另请参阅this issue有人为 JPA 的 future 版本请求它。
关于java - 如何将文本 JPQL JPA 查询转换为条件查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31877539/