ger*_*rry 6 inheritance jpa table-per-class
我正在使用EclipseLink作为JPA提供程序.此外,我正在使用以下TABLE_PER_CLASS继承结构
@javax.persistence.Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
@NamedQueries({
@NamedQuery(name=Parent.QUERY_FIND_ALL, query="SELECT p FROM Parent p")
})
public class Parent {
// the class code follows here
}
@javax.persistence.Entity
@NamedQueries({
@NamedQuery(name=Child.QUERY_FIND_ALL, query="SELECT c FROM Child c")
})
public class Child extends Parent {
// the class code follows here
}
Run Code Online (Sandbox Code Playgroud)
现在的问题是我只想接收父类的条目.但是使用命名查询"SELECT p FROM Parent p",也会返回子表中的所有条目.
选择或查找代码如下:
public List findWithNamedQuery(String query) {
return em.createNamedQuery(query).getResultList();
}
Run Code Online (Sandbox Code Playgroud)
因此查询即"SELECT p FROM Parent p".
我怎样才能真正接收父条目而不是这个inheritacne层次结构的所有条目?
简而言之:如何保持所有子条目不受影响,并仅返回父条目?
编辑1:
我正在使用EclipseLink 2.0.1,但每次我通过类型表达式尝试axtavt的解决方案时,我都会收到以下错误:
"Invalid Type Expression on [my.domain.Parent]. The class does not have a descriptor, or a descriptor that does not use inheritance or uses a ClassExctractor for inheritance".
Run Code Online (Sandbox Code Playgroud)
我已经更新到EclipseLink的最新稳定版本2.1.1,但它没有解决问题.
如果您的EclipseLink版本支持JPA 2.0,您可以编写
SELECT p FROM Parent p WHERE TYPE(p) = Parent
Run Code Online (Sandbox Code Playgroud)
Type 表达式与 TABLE_PER_CLASS 继承相结合在 EclipseLink 2.1.1 下不起作用,这似乎是一个错误。
| 归档时间: |
|
| 查看次数: |
8616 次 |
| 最近记录: |