我正在使用带有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()
,但它没有解决问题。
答案 0 :(得分:0)
在一个事务中保留对象并且正在进行更新 另一笔交易。两个交易都发生在的一小部分 毫秒间隔。仅针对某些记录,此问题正在提出
这可能是因为创建和创建之间的间隔最小。更新。 如果可以,请尝试在两个单独的线程上创建和更新。并加入更新线程以确保它等待创建线程完成。回复你的结果。
此外,请参阅此信息并检查您的更新是否在插入完成之前触发:
How to log the response time for insert & update query in Hibernate
P.S.>暂时没有评论权限,所以发帖作为答案。