Spring entitymanager

时间:2015-03-01 13:10:05

标签: spring entitymanager

我遇到了我的申请问题。我的应用程序从队列中读取消息并持久保存到数据库。插入记录是好的。但是当更新时,它会随机丢失。正确更新,但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();

    }

1 个答案:

答案 0 :(得分:0)

在运行查询之前,需要刷新EntityManager。看起来大多数情况下这种情况已经发生,但是当新的EventTransaction尚未写入数据库时​​,没有什么可以更新的。然后,您的数据库事务提交,并在执行过程中刷新EntityManager,将未更改的EventTransaction写入数据库。