2012-03-27 10 views
14

se ho questa entità:Condizioni per la raccolta APP OneToMany

@Entity 
class Pet { 

    @Id 
    long id; 

    public enum State { ALIVE, DEAD } 

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

    @... 
    String name; 

} 

È possibile creare una mappatura come questo:

@Entity 
class Owner { 

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

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

} 

risposta

19

Per quanto ne so questo non è parte della specifica JPA. Almeno iberna implementazione JPA fornisce una propria annotazione @Where che può essere usato:

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

sto già usando alcune caratteristiche specifiche Hibernate, in modo che sarebbe stato ok. –

+0

Vedo, hai cambiato la tua domanda. Per spiegare la mia risposta un po 'di più: la clausola @Where si riferisce al valore db della colonna di stato nella tabella degli animali domestici. Quindi per favore controlla se funziona anche con il tuo stato enum. – magomi

+1

Sì, mappo sempre enumerazioni come stringhe. –

Problemi correlati