User.java
@Entity
@EntityListeners(UserAuditListener.class)
public class User implements UserDetails{
}
UserAuditListerner
public class UserAuditListener extends ParentAuditListeners<User> {
/*@PrePersist
public void prePersist(User user){
perform(user,Action.INSERTED);
}
@PreUpdate
public void preUpdate(User user){
perform(user,Action.UPDATED);
}
@PreRemove
public void preRemove(User user){
perform(user,Action.DELETED);
}
@Transactional(Transactional.TxType.MANDATORY)
public void perform(User user, Action action){
EntityManager em = AuditEntityBean.getBean(EntityManager.class);
String table = user.getClass().getName().substring(26);
AuditLogs auditLogs = new AuditLogs(action,table);
em.persist(auditLogs);
}
*/
}
ParentAuditListener.java
public class ParentAuditListeners<U> {
@PrePersist
public void prePersist(U u){
perform(u,Action.INSERTED);
}
@PreUpdate
public void preUpdate(U u){
perform(u,Action.UPDATED);
}
@PreRemove
public void preRemove(U u){
perform(u,Action.DELETED);
}
@Transactional(Transactional.TxType.MANDATORY)
public void perform(U u, Action action){
EntityManager em = AuditEntityBean.getBean(EntityManager.class);
String table = u.getClass().getName().substring(26);
AuditLogs auditLogs = new AuditLogs(action,table);
em.persist(auditLogs);
}
}
Сценарий таков, что я хочу провести аудит нескольких организаций.и мне нужны эти @PrePersist, @PreUpdate and @PreRemove
методы в каждом слушателе.
Я создал класс ParentAuditListener, чтобы я мог расширить его для другого класса Auditlistener.например: -
public class BankAuditListener extends ParentAuditListener<Bank> {
}
и сохранить несколько журналов о банке в моей базе данных.
В приведенном выше классе UserAuditListener, если я удаляю, расширяет ParentAuditListener и раскомментирует эти @PrePersist, @PreUpdate and @PreRemove
, он работает, как и ожидалось.
но сейчас я пытаюсь сделать его динамичным, а не писать их снова и снова.Это не работает.UserAuditListener никогда не будет выполняться.