在jpql中是否有相同的视图?

时间:2010-05-17 11:33:09

标签: java jpa jpql

如果我有一个复杂的where子句在许多查询之间略有不同,那么在SQL中我会根据大多数where子句创建一个视图,然后多次查询该视图。 无论是性能还是可维护性。

我在jpql中看不到相同的内容。

是我还是jpql规范。遗失了什么?

干杯,菲尔

2 个答案:

答案 0 :(得分:1)

不是直接答案,但为什么不在SQL视图上映射实体?在某些情况下,SQL视图是最简单,最有效的解决方案,尤其是在数据是只读的情况下。只是不要滥用它们。

答案 1 :(得分:0)

在JPA2中,EntityManager和CriteriaQuery的组合非常强大:

http://java.sun.com/javaee/6/docs/api/javax/persistence/criteria/CriteriaQuery.html

http://java.sun.com/javaee/6/docs/api/javax/persistence/EntityManager.html#createQuery(javax.persistence.criteria.CriteriaQuery%29

使用CriteriaBuilder定义基本CriteriaQuery(有点像视图),然后使用entitymanager基于criteriaquery创建查询。由于criteriaquery是对象,因此它们可以在java端重用。

可能提供者还对条件查询实施缓存,但我不知道。