Hibernate中的实体特定列表器/事件/拦截器

时间:2017-05-23 14:38:31

标签: java spring hibernate

我有很多实体(超过1000个),但我需要特定实体的侦听器/拦截器/事件(70-80)。我不想根据拦截器中的if else条件进行检查,因为它会使代码变脏。

spring / Hibernate中是否有任何注释或接口仅侦听该注释。

1 个答案:

答案 0 :(得分: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)。只需检查注释是否存在并相应地应用您的逻辑。