4

Webアプリで削除操作を実行したくありません。したがって、レコードが削除された場合にPに等しい列Statusをすべてのテーブルに保持します。デフォルトでは、レコードがフェッチされるときにそれが必要です。ステータス=Pのエンティティはフェッチしないでください。つまり、追加のwhere句が発生する必要があります... where status = A; またはステータス!=P。

注釈を使用してそれを達成するための最良の方法は何ですか?確かに手動クエリを書くことができます。

例:MyUserクラスには複数の子を含めることができます。user.getChilds()がステータスがPの子を返さないように実装するにはどうすればよいですか?

User.java
   @OneToMany( mappedBy = "usr",
            targetEntity = Child.class,
            fetch = FetchType.EAGER,
            cascade = CascadeType.ALL )
    @OrderBy( "fullName ASC" )
    List<Child> childs;

Child.java:
    @ManyToOne
    @JoinColumn
    User usr;
4

1 に答える 1

6

Hibernate フィルター、または追加のwhere 句を使用します。フィルターは実行時にアクティブ化してパラメーター化できますが、where 句はできません。しかし、どちらも追加の where 句を永続的なコレクションに適用するために使用されます。

于 2012-05-27T14:33:22.330 に答える