JPA 공급자로 EclipseLink를 사용하고 있습니다. 또한 나는 다음과 같은 TABLE_PER_CLASS 상속 구조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
}
문제를 사용하고있어 지금은 상위 클래스의 항목을 수신 할 것입니다. 그러나 명명 된 쿼리 "SELECT p FROM Parent p"를 사용하면 하위 테이블의 모든 항목도 반환됩니다. 다음
셀렉트 또는 발견 코드 :
public List findWithNamedQuery(String query) {
return em.createNamedQuery(query).getResultList();
}
이에 쿼리 즉 "부모 (P)로부터 (P)을 선택"이다.
이 상속 계층 구조의 모든 항목이 아닌 상위 항목 만 실제로받을 수 있습니까?
간단히 말해, 모든 하위 항목을 변경하지 않고 부모 항목 만 반환하려면 어떻게해야합니까?
편집 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".
나는 또한 업데이트 한을 EclipseLink의 최신 안정 버전 2.1.1로 업그레이드했지만 문제가 해결되지 않습니다.
답변을 찾을 수 있습니까? 나는 똑같은 일을하려하고있다. 내 쿼리에 대해 부모 행만 반환하지만 하위 행도 반환됩니다. –
이 질문에 대한 업데이트가 있으십니까?이 @gerry에 대한 답변을 찾았습니까? –