我遇到了我的申请问题。我的应用程序从队列中读取消息并持久保存到数据库。插入记录是好的。但是当更新时,它会随机丢失。正确更新,但10%的记录没有随机更新。下面的大多数记录都是我正在使用的代码的片段:
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
@PersistenceContext
protected EntityManager entityManager;
@Override
public int updateTransaction(AuditRequest auditRequest) throws TesException {
LOG.info("updateTransaction : Updating Event Transaction");
Query query = entityManager.createNamedQuery("updateEventTransactionQuery");
query.setParameter("status", auditRequest.getStatus());
query.setParameter("failureInfo", auditRequest.getFailureInfo());
query.setParameter("endDateTimestamp", getTimestamp(auditRequest.getEndDateTime()));
query.setParameter("transUID", auditRequest.getTransUID());
query.setParameter("transaction", auditRequest.getTransaction());
return query.executeUpdate();
}
答案 0 :(得分:0)
在运行查询之前,需要刷新EntityManager。看起来大多数情况下这种情况已经发生,但是当新的EventTransaction尚未写入数据库时,没有什么可以更新的。然后,您的数据库事务提交,并在执行过程中刷新EntityManager,将未更改的EventTransaction写入数据库。