2009-06-01 6 views
0

Ausdauer Klasse Hibernate: @Entity public class A {Hibernate auto Joinbedingungen

@OneToMany(mappedBy = "a") 
    private Set<B> bSet = new HashSet<B>(); 

    @Basic 
    private boolean DELETED; 

} 

Klasse B auch ein gelöschtes Objekt haben. Wie können wir die Eigenschaft DELETED während des Beitritts automatisch verarbeiten, um nur nicht gelöschte Entitäten auszuwählen. Kann mit Hilfe von einigen Anmerkungen sein. Es ist möglich?

Antwort

1

Viele thx! , dass meine Entschlossenheit ist:

@Entity 
public class A extends DeletableEntity{ 

    @OneToMany(mappedBy = "a") 
    @Where(clause = "DELETED=0 or DELETED is null") 
    private Set<B> bSet = new HashSet<B>(); 

    public Set<B> getBSet() { 
     return bSet; 
    } 

    public void setBSet(Set<B> bSet) { 
     this.bSet = bSet; 
    } 
} 

und HQL "wählen a.DELETED von A einen Join a.bSet bSet" native SQL wie folgt erzeugen wird:

wählen Sie Als col_0_0_ von A A0_ a0_.DELETED Exklusionsverknüpfung B bset1_ auf a0_.id = bset1_.a_id und (bset1_.DELETED = 0 oder bset1_.DELETED ist null)

und EntityManager.find (...) wird dann arbeiten :)

Verwandte Themen