2009-06-01 13 views
0

が永続クラスHibernateの参加: @EntityパブリッククラスA {自動休止状態条件

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

    @Basic 
    private boolean DELETED; 

} 

クラスBも削除特性を有します。 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このようなネイティブSQLを生成します "に参加a.bSet BSETからa.DELETEDを選択":

がa0_からcol_0_0_としてa0_.DELETED選択の私の決意です 内側はa0_.id = bset1_.a_id 及び(bset1_.DELETED = 0またはbset1_.DELETEDがnull)

とentityManager.find(...)が正しく動作するにはBのbset1_に参加:)

2

Hibernate documentationによれば、ResultTransformer(ALIAS_TO_ENTITY_MAP)を使用する必要があります。