即使DB中存在记录,Hibernate也会抛出NoResultException

时间:2013-10-18 09:10:14

标签: hibernate jpa

我正在使用带有Rest-easy框架的jboss-as-7.1.1.Final, hibernate 4.0。问题是在DB中持久保存记录后,将触发更新调用以更新/插入持久对象的子实体。

所以我使用em.find(record.class, primary key(long))方法来获取持久化的父记录并检查null。如果父记录不为null,则插入/更新到子记录中。

它在本地工作正常,但是当我进行负载测试时,即使父对象存在于DB中,父记录也将变为null。任何的想法 ?

以下是代码快照:

//persisting record in one API call
entityManager.persist(record);

//Finding record 
    Record record = entityManager.find(Record.class, recordId);
        if (record != null) {
            //Fetch child entity
            Hibernate.initialize(record.getRecordsettings());
            Hibernate.initialize(record.getRecordstate());
        }
        return record;
    }

我尝试了em.refresh(),但它没有解决问题。

1 个答案:

答案 0 :(得分:0)

  

在一个事务中保留对象并且正在进行更新   另一笔交易。两个交易都发生在的一小部分   毫秒间隔。仅针对某些记录,此问题正在提出

这可能是因为创建和创建之间的间隔最小。更新。 如果可以,请尝试在两个单独的线程上创建和更新。并加入更新线程以确保它等待创建线程完成。回复你的结果。

此外,请参阅此信息并检查您的更新是否在插入完成之前触发:

How to log the response time for insert & update query in Hibernate

P.S.>暂时没有评论权限,所以发帖作为答案。