我将 jHipster 与 Spring Data JPA 一起使用,并采用以下方法:
@Transactional(propagation=Propagation.REQUIRES_NEW)
public void doSomeWork(EntityA entityA) {
// some code
List<EntityB> entityBList = new ArrayList<EntityB>();
entityBList.add(new EntityB());
entityA.addAllEntityB(entityBList);
}
在最后一行,我得到org.hibernate.LazyInitializationException
一个我不明白的感受。
答案 0 :(得分:1)
可能是抛出了LazyInitializationException,因为启动了一个新事务并且entityA变为&#34; detached&#34;结果。
可以使用这样的东西:
@Transactional
public void addEntityB(long entityAId, entityB) {
EntityA entityA = loadEntityA(entityAId);
addEntityBToEntityA(entityA, entityB);
saveEntity(entityB);
}
以这种方式从外面打来电话:
for (EntityB entityB : entityBList) {
try {
addEntityB(entityAId, entityB);
}
catch(Exception e){
log(e);
}
}
但是,每次加载entityA都是如此。