如果我有一个复杂的 where 子句,它在许多查询之间仅略有不同,那么在 SQL 中,我将基于大部分 where 子句创建一个视图,然后多次查询该视图。兼顾性能和可维护性。
我在 jpql 中没有看到类似的东西。
我是我还是 jpql 规范。遗漏了什么?
干杯,菲尔
不是直接的答案,但为什么不将实体映射到 SQL 视图上呢?在某些情况下,SQL 视图是最简单、最有效的解决方案,尤其是当数据是只读的时。只是不要滥用它们。
在 JPA2 中,EntityManager 和 CriteriaQuery 的结合非常强大:
http://java.sun.com/javaee/6/docs/api/javax/persistence/criteria/CriteriaQuery.html
您使用 CriteriaBuilder 定义一个基本的 CriteriaQuery(有点像视图),然后使用 entitymanager 创建基于条件查询的查询。由于criteriaquery 是对象,它们在java 端是可重用的。
可能提供者还针对标准查询实现缓存,但我不知道。