如果我有一个复杂的where子句在许多查询之间略有不同,那么在SQL中我会根据大多数where子句创建一个视图,然后多次查询该视图。 无论是性能还是可维护性。
我在jpql中看不到相同的内容。
是我还是jpql规范。遗失了什么?
干杯,菲尔
答案 0 :(得分:1)
不是直接答案,但为什么不在SQL视图上映射实体?在某些情况下,SQL视图是最简单,最有效的解决方案,尤其是在数据是只读的情况下。只是不要滥用它们。
答案 1 :(得分:0)
在JPA2中,EntityManager和CriteriaQuery的组合非常强大:
http://java.sun.com/javaee/6/docs/api/javax/persistence/criteria/CriteriaQuery.html
使用CriteriaBuilder定义基本CriteriaQuery(有点像视图),然后使用entitymanager基于criteriaquery创建查询。由于criteriaquery是对象,因此它们可以在java端重用。
可能提供者还对条件查询实施缓存,但我不知道。