Estoy usando EclipseLink como el proveedor de JPA. Además estoy usando la siguiente estructura de herencia TABLE_PER_CLASSHerencia de JPA TABLE_PER_CLASS: ¿Cómo solo SELECCIONAR las entradas de superclase?
@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
}
El problema ahora es que sólo quiero recibir las instancias de la clase padre. Pero con la consulta llamada "SELECT p FROM Parent p" también se devuelven todas las entradas de la tabla secundaria.
El seleccione o encontrar el código es el siguiente:
public List findWithNamedQuery(String query) {
return em.createNamedQuery(query).getResultList();
}
De esta manera es decir, la consulta "SELECT P De padre P".
¿Cómo solo puedo recibir realmente las entradas principales y no todas las entradas de esta jerarquía inheritacne?
En resumen: ¿Cómo puedo dejar todas las entradas secundarias sin tocar y devolver solo las entradas principales?
EDIT 1:
estoy usando EclipseLink 2.0.1, pero cada vez que intente la solución de axtavt a través de la expresión de tipo, me sale el siguiente error:
"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".
He actualizado también a la última versión estable 2.1.1 de EclipseLink, pero no resuelve el problema.
¿Alguna vez resolver esto? Estoy tratando de hacer lo mismo. Para mi consulta, solo quiero que se devuelvan las filas primarias, pero también se devuelven las filas secundarias. –
¿Alguna actualización de esta pregunta? Quiero decir, ¿alguna vez has encontrado la respuesta para este @gerry –