2017-05-23 4 views
0

私は多くのエンティティ(1000以上)を持っていますが、特定のエンティティ(70-80)に対してリスナ/インターセプタ/イベントが必要です。私はコードを汚くするため、インターセプタのif else条件に基づいてチェックしたくありません。Entity Specific Listner/Event/Interceptor in Hibernate

spring/Hibernate内にそのアノテーションのみをリッスンするアノテーションまたはインターフェイスがありますか?

答えて

1

マーカーインターフェイス(メソッドなし)を導入し、すべてのエンティティに追加します。インターセプタの方法で

だけ

public boolean onSave(Object entity,Serializable id, 
    Object[] state,String[] propertyNames,Type[] types) 
    throws CallbackException { 

    System.out.println("onSave"); 

    if (entity instanceof IMarkerInterface){ 
     doSomethingWith(entity); 
    } 
    return false; 
} 

を確認するか、あなたはエンティティのカスタムアノテーションを追加し、entity.getClass().getClass().getAnnotation(MarkerAnnotation.class)を使用することができます。アノテーションが存在するかどうかを確認し、それに応じてロジックを適用してください。