2
작성 작업을 감사하기 위해 "doAudit"이라는 @PostPersist 메소드가있는 수신기가 있습니다. 디버깅 중입니다.이 메소드가 호출되고 JAVA 측에서 감사 레코드가 생성됩니다. 하지만 DB를 확인할 때 기록이 보이지 않습니다.@PostPersist는 감사 레코드를 DB에 저장하지 않습니다.
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;
}
}
내 ORM은 Open JPA 2.0을 사용하고 있습니다. 카라프 컨테이너에 배치. 내 백엔드로 Postgres SQL을 사용하고 있습니다.
디버깅하고 TransactionInterceptor를 찾습니다. 한 가지 흥미로운 점은 PostPersist를 PrePersist로 변경하면 감사 레코드가 DB에 저장되지만 PostPersist에서 작업하기를 원합니다. 감사 – auhuman