赞
踩
前言:沉浸在代码中,没有跳出来看问题就容易钻牛角尖。还是遇见的问题太少。遇见的问题越多,知道的就会越多。
两个不同的实体类深拷贝,然后把id赋值回去更新,会出现一条新数据。
A updateA = DTOMapper.MAPPER.po2po(bAudit);
updateA.setId(1)
sheetRepository.save(updateA);
1.save方法源码
/*
* (non-Javadoc)
* @see org.springframework.data.repository.CrudRepository#save(java.lang.Object)
*/
@Transactional
public S save(S entity) {
if (entityInformation.isNew(entity)) {
em.persist(entity);
return entity;
} else {
return em.merge(entity);
}
}
在这里说一下,save上spring就已经加了 @Transactional 开启事务的注解。用spring来管理事务就必须开启事务,不然保存不了,因为SET AUTOCOMMIT=0了。
save方法的第一句代码就是判断entity是否是新增还是更新。
2.看isNew实现
第一个是AbstractPersistable提供的,也是我们熟知的 ,根据id是否为空来判断是否是更新
<Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。