2017-05-23 6 views
0

Ich habe viele Entitäten (mehr als 1000), aber ich brauche Listener/Interceptor/Event für bestimmte Entitäten (70-80). Ich möchte nicht auf der if-sonst-Bedingung im Interceptor überprüfen, weil der Code schmutzig ist.Entity Specific Listner/Event/Interceptor in Hibernate

Gibt es eine Anmerkung oder Schnittstelle im Frühling/Hibernate, die nur für diese Anmerkung hört.

Antwort

1

Führen Sie eine Marker-Schnittstelle (keine Methoden) ein und fügen Sie sie allen Entitäten hinzu.

In der Methode des Interceptor nur überprüfen

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; 
} 

Oder Sie können eine benutzerdefinierte Anmerkung für die Entitäten hinzufügen und entity.getClass().getClass().getAnnotation(MarkerAnnotation.class) verwenden. Überprüfen Sie einfach, ob die Anmerkung existiert und wenden Sie Ihre Logik entsprechend an.

Verwandte Themen