Spring更新实体与在同一事务中创建的实体
我创建了一个实体,我想将新创建的实体保存为另一个对象的一部分。但是,当我运行代码时,没有错误,但是该值没有保存在数据库中 下面是创建实体并将其存储在另一个实体中的代码Spring更新实体与在同一事务中创建的实体,spring,hibernate,jpa,Spring,Hibernate,Jpa,我创建了一个实体,我想将新创建的实体保存为另一个对象的一部分。但是,当我运行代码时,没有错误,但是该值没有保存在数据库中 下面是创建实体并将其存储在另一个实体中的代码 Info persisted = infoService.create(info); account.setInfo(persisted); update(account); 要更新的代码如下所示: @Override public void update(final T entity) { Preconditions.
Info persisted = infoService.create(info);
account.setInfo(persisted);
update(account);
要更新的代码如下所示:
@Override
public void update(final T entity) {
Preconditions.checkNotNull(entity);
getDao().save(entity);
}
@Transactional
public <S extends T> S save(S entity) {
if (entityInformation.isNew(entity)) {
em.persist(entity);
return entity;
} else {
return em.merge(entity);
}
}
保存方法如下所示:
@Override
public void update(final T entity) {
Preconditions.checkNotNull(entity);
getDao().save(entity);
}
@Transactional
public <S extends T> S save(S entity) {
if (entityInformation.isNew(entity)) {
em.persist(entity);
return entity;
} else {
return em.merge(entity);
}
}
@Transactional
公共存储(S实体){
if(entityInformation.isNew(实体)){
em.persist(实体);
返回实体;
}否则{
返回em.merge(实体);
}
}
我哪里出错了?在执行
持久化
或更新
之后,您应该刷新实体
,以便将持久化上下文与文档中提到的基础数据库同步,
然后您可以创建一个名为saveAndFlush的方法并调用您的方法,以后您可以这样使用:
@Transactional
public <S extends T> S saveAndFlush(S entity) {
S result = save(entity);
em.flush();
return result;
}
@Transactional
公共存储和刷新(S实体){
S结果=保存(实体);
em.flush();
返回结果;
}