1

我正在使用jboss-as-7.1.1.Final, hibernate 4.0Rest-easy 框架。问题是在数据库中持久化记录后立即触发更新调用以更新/插入持久化对象的子实体。

所以我正在使用em.find(record.class, primary key(long))方法来获取持久的父记录并检查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(),但它并没有解决问题。

4

1 回答 1

0

在一个事务中持久化对象并在另一个事务中发生更新。两个事务都在几分之一毫秒的时间间隔内发生。仅针对某些记录,此问题正在引发

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

另外,请参考这篇文章并检查您的更新是否在插入完成之前触发:

如何在 Hibernate 中记录插入和更新查询的响应时间

PS>还没有评论权限,所以发布作为答案。

于 2017-01-20T03:17:40.297 回答