我的申请遇到了一个问题。我的应用程序从队列中读取消息并保存到数据库中。记录的插入效果很好。但是当涉及到更新时,它是随机缺失的。已正确更新,但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();
}发布于 2015-03-02 21:41:38
在运行查询之前,需要刷新EntityManager。看起来大多数时候这种情况已经发生了,但是当新的EventTransaction还没有写入数据库时,就没有什么需要更新的了。然后,您的数据库事务提交,并在提交过程中刷新EntityManager,将未更改的EventTransaction写入数据库。
https://stackoverflow.com/questions/28793920
复制相似问题