У меня есть слушатель с методом @PostPersist под названием «doAudit» для аудита create action.On для отладки. Я вижу, что этот метод вызывается, а запись аудита создается на стороне JAVA. Но когда я проверяю БД, я не вижу запись.@PostPersist не сохраняет запись аудита в БД
public class AuditListener {
@PostPersist
public void doAudit(Object object) {
AuditDao auditManager = AuditDaoImpl.getInstance();
auditManager.logEvent("create", object);
}
}
public interface AuditDao {
@Transactional(propagation= Propagation.REQUIRED)
public AuditEntity logEvent(String action, Object object);
}
@Component
public class AuditDaoImpl implements AuditDao {
private static AuditDaoImpl me;
public AuditDaoImpl() {
me = this;
}
public static AuditDaoImpl getInstance() {
return me;
}
@Autowired
private AuditDao dao;
@Transactional
@Override
public AuditEntity logEvent(String action, Object object) {
AuditEntity act = new AuditEntity();
act.setAction(action);
act.setObject(object);
dao.create(act);
return act;
}
}
Я использую Open JPA 2.0 как для своего ОРМ. Развертывается на контейнере. Я использую Postgres SQL в качестве моего бэкэнд.
Я буду отлаживать и искать TransactionInterceptor. Интересно, когда я меняю PostPersist на PrePersist, запись аудита сохраняется в DB, но я хочу, чтобы она работала на PostPersist. благодаря – auhuman