2

私のデータベースでは、オブジェクトを削除しません。代わりにソフト削除が実行されます。delted フラグが true に設定されていることを意味します。これは、@Filter アノテーションを使用して hibernate でフィルタリングする必要があります。これは機能しますが、フィールドがフィルタリングされないという問題があります。

たとえば、子クラスと子を含む親クラスがあります。子が削除され、親がロードされた場合、親オブジェクトには子オブジェクトが含まれます (deleted フラグは正しく設定されています)。しかし、コレクションで動作するように、子オブジェクトをフィルタリングしたいと思います。それを行う方法はありますか?

フィールドをコレクションのように扱ってみましたが、うまくいきませんでした。

@Entity
@FilterDef(name = deletedFilter, parameters = @ParamDef(name = deletedParam, type = "boolean"))
@Filter(name = deletedFilter, condition = ":deletedParam = deleted")
public class Child {}


@Entity
public class Parent {
    @OneToOne
    @Filter(name = deletedFilter, condition = ":deletedParam = deleted")
    private Child child = new Child();
} 
4

2 に答える 2

1

Hibernate フィルターが@OneToOneリレーションで機能しません。

https://hibernate.onjira.com/browse/HHH-4026

説明は問題へのコメントにあります。フィルターは関係のカーディナリティを変更します。

于 2012-08-22T16:00:03.807 に答える
0

ブール値フラグが機能しない場合は、代わりに整数値を使用できます。それに応じてチェックすることができます。

于 2017-12-25T10:14:24.377 に答える