2016-04-14 11 views
0

私はHibernate 3.5.4バージョンをOrmとして使用しています。テーブル「ブック」のように多くの「著者」を関連付けることができます。特定の条件に基づいてManytoOneを取得します

@OneToMany(mappedBy = "key.bookId", fetch = FetchType.EAGER, cascade = CascadeType.ALL) 
public Set<BookAuthor> getAuthors() { 
    return authors; 
} 

しかし、我々はソフト(私たちはisDeletedという名前の列を維持する)の関連付けを削除するためにdeleteを使用、私は0負荷それならばその1、それは、他のロードすべきではない場合isDeletedチェックに基づいてエンティティを取得したいです。

上記のサポートを提供するためにこの現在のフェッチ戦略を変更することが可能ですか、それとも私に教えてください。

答えて

1

この記事では、あなたが必要とするシナリオを合計する必要がありますhttps://dzone.com/articles/hibernate-where-clause

+1

私はどこにクラスレベルで使用してについては非常に慎重になります。私が知る限り、クラスレベルで注釈が付けられている場合はWhere-Clauseをオーバーライドできません。 getterを使用した場所またはフィルタの宣言はより柔軟です。 – samjaf

+0

非常に同意します。しかし、この特定の目的(ソフト削除)では、アプリケーション全体を均一に処理したい場合は、それをOKにする必要があります。 – rapasoft

1

@Filterまたは@Where注釈をご覧ください。

私が知る限り、これはコレクションの取得を制限する通常の方法です。

関連する問題