Kim*_*imi 12 java jpa jpql jpa-2.0
假设我们有一个抽象的@Entity Animal,以及几个扩展Animal的实体类,包括Dog,Cat,Monkey和Bat.
如何根据扩展实体的类过滤结果?
示例:有复选框,用户可以在其中选择要检索的实体.
[ ] Dog
[X] Cat
[X] Monkey
[ ] Bat
Run Code Online (Sandbox Code Playgroud)
现在我想检索具有在Animal类中定义的(命名)查询的实体.我可以在查询中放入什么样的查询参数,以便只返回Cat和Monkey对象?
JB *_*zet 31
我不是很确定它是由JPA支持的,但是在Hibernate中这样做的方式,无论继承策略如何,因此即使你没有鉴别器(或者没有将它作为属性映射)也是使用隐式class属性:
String jpql = "select a from Animal a where a.class in (:classes)";
Query q = em.createQuery(jpql).setParameter("classes",
Arrays.asList(Cat.class, Monkey.class));
Run Code Online (Sandbox Code Playgroud)
编辑:
我刚刚在JPA2中发现使用TYPE运算符:
String jpql = "SELECT a FROM Animal a WHERE TYPE(a) IN :classes";
Query q = em.createQuery(jpql).setParameter("classes",
Arrays.asList(Cat.class, Monkey.class));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11327 次 |
| 最近记录: |