Pregunta

Estoy usando EclipseLink como el proveedor JPA. Además estoy usando la siguiente estructura de herencia 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
}

El problema ahora es que sólo quiero recibir las instancias de la clase padre. Pero con la consulta con nombre "SELECT P De padre P" también todas las entradas de la tabla secundaria se devuelven.

El código de seleccionar o encontrar es el siguiente:

public List findWithNamedQuery(String query) {
        return em.createNamedQuery(query).getResultList();
}

De este modo consulta es decir, el "SELECT p de los padres p".

¿Cómo puedo recibir solamente realmente las entradas principales y no todas las entradas de esta jerarquía inheritacne?

En pocas palabras: ¿Cómo puedo salir de todas las entradas de niño sin tocar, y devolver sólo las entradas de padres

?

EDIT 1:
Estoy usando EclipseLink 2.0.1, pero cada vez que intento 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".

También he actualizado a la última versión estable 2.1.1 de EclipseLink, pero no resuelve el problema.

¿Fue útil?

Solución 2

La expresión de tipo en combinación con TABLE_PER_CLASS herencia doesn' t trabajo bajo EclipseLink 2.1.1, esto parece ser un error.

Vea también la respuesta a JPA 2.0: Tipo de excepción expresión

Otros consejos

Si su versión de EclipseLink apoya JPA 2.0, puede escribir

SELECT p FROM Parent p WHERE TYPE(p) = Parent
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top