2009-06-01 3 views
0

Hibernate настойчивость класс: @Entity общественного класса A {спящий режим автоматически присоединиться условия

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

    @Basic 
    private boolean DELETED; 

} 

Класс B также имеют свойство DELETED. Как мы можем обрабатывать свойство DELETED во время соединения автоматически, для выбора только не удаленных объектов. Может быть, с помощью некоторых аннотаций. Возможно?

ответ

1

Многие thx! , что моя решимость:

@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; 
    } 
} 

и HQL "выберите a.DELETED из А присоединиться к a.bSet Bset" будет генерировать родной SQL так:

выберите a0_.DELETED в col_0_0_ от A a0_ внутреннее соединение B bset1_ на a0_.id = bset1_.a_id и (bset1_.DELETED = 0 или bset1_.DELETED равно нулю)

и entityManager.find (...) будет работать сразу :)

Смежные вопросы