2017-11-30 9 views
0

私はこのような機能を探していました。ブール値フィールドには、たとえば@ValidFlagと注釈を付けることができます。エンティティのスプリングデータJPA有効フラグ

@Data 
@MappedSuperclass 
@EntityListeners(AuditingEntityListener.class) 
public abstract class BaseEntity implements Serializable { 

    @CreatedDate 
    Date creationDate; 

    @LastModifiedDate 
    Date updateDate; 

    @ValidFlag 
    Boolean isActive = Boolean.TRUE; 
} 

だから、例えば私は、このフィールドの値falseを持つエンティティを挿入すると、何もリポジトリ操作は、このエンティティを取得する必要があり得るん、それはダーティフラグとして、のように、しかしすることができます。この基本エンティティを拡張しているすべてのエンティティに対して、取得する操作ごとにこの追加の列チェックを非表示にするのは、とても良い方法です。

ネイティブにサポートされていない場合(そのように見えます)、Hibernate/JPAにロジックをカスタム追加することでこれを処理する方法を考えることができますか?

答えて

1

Hibernateでソフト削除を実装する方法を見てください。 これもあなたのケースでうまくいく可能性があります。

フェッチから非アクティブなエンティティを除外するために、エンティティに@Where句を追加します。

https://vladmihalcea.com/the-best-way-to-soft-delete-with-hibernate/ https://www.thoughts-on-java.org/implement-soft-delete-hibernate/

+0

はあなたに@Whereを追加しました:そのことについて二つの大きな記事があり

@Where(clause = "isActive = true") 

あなたのBaseEntity? –

+0

私はあなたがHibernate> 5.1を使用していると仮定します。この記事を慎重に読んでください:https://vladmihalcea.com/2017/03/08/the-best-way-to-soft-delete-with-hibernate/ EntityManger.findメソッドの@Loader –

関連する問題