1. 自定义实体类监听器类。
    public class DataBaseAuditListener {
        @PrePersist
        public void prePersist(Object object)
                throws IllegalArgumentException, IllegalAccessException {
            Field[] fields = object.getClass().getDeclaredFields();
            for (int i = 0; i < fields.length; i++) {
                Field field = fields[i];
                if (null != field.getDeclaredAnnotation(CreatedDate.class)) {
                    field.setAccessible(true);
                    field.set(object, LocalDateTime.now().withNano(0));
                } else if (null != field
                        .getDeclaredAnnotation(LastModifiedDate.class)) {
                    field.setAccessible(true);
                    field.set(object, LocalDateTime.now().withNano(0));
                }
    
                if (field.getName() == "delFlag") {
                    field.setAccessible(true);
                    boolean delFlag = (boolean) field.get(object);
                    if (!delFlag) {
                        break;
                    }
                }
    
                if (null != field.getDeclaredAnnotation(DeleteBy.class)) {
                    field.setAccessible(true);
                    field.set(object, "aku");
                } else if (null != field.getDeclaredAnnotation(DeleteDate.class)) {
                    field.setAccessible(true);
                    field.set(object, LocalDateTime.now().withNano(0));
                }
    
            }
    
        }
    
    }
    

     

  2.  

  •  被@Prepersist注解的方法 ,完成save之前的操作。
  • 被@Preupdate注解的方法 ,完成update之前的操作。
  • 被@Postpersist注解的方法 ,完成save之后的操作。
  • 被@Postupdate注解的方法 ,完成update之后的操作。

     3.

     在方法中利用反射机制,可以实现对(创建日期,创建者,更新日期更新者,删除日期,删除者)等注解的字段的赋值操作。


    4.在实体类中使用@EntityListeners注解引入自定义监听类。 

     

 

10-07 16:07