2012-03-27 9 views
14

si tengo esta entidad:Condiciones para la recogida de APP OneToMany

@Entity 
class Pet { 

    @Id 
    long id; 

    public enum State { ALIVE, DEAD } 

    @Enumerated(EnumType.STRING) 
    @... 
    State state; 

    @... 
    String name; 

} 

¿Puedo crear un mapeo:

@Entity 
class Owner { 

    @OneToMany(condition="state = ALIVE") // or something like that 
    Set<Pet> alivePets; 

    @OneToMany(condition="state = DEAD") 
    Set<Pet> deadPets; 

} 

Respuesta

19

Por lo que yo sé que esto no es parte de la especificación JPA. Al menos hiberna aplicación APP proporciona una anotación propia @Where que se puede utilizar:

@OneToMany 
@Where(clause = "state = 'ALIVE'") 
Set<Pet> alivePets 
+0

ya estoy usando algunas de las características específicas de hibernación, por lo que estaría bien. –

+0

Veo, ha cambiado su pregunta. Para explicar mi respuesta un poco más: la cláusula @Where se refiere al valor db de la columna de estado en su tabla de mascotas. Por lo tanto, compruebe si también funciona con su estado enum. – magomi

+1

Sí, siempre asigno las enumeraciones como cadenas. –

Cuestiones relacionadas