当前位置:   article > 正文

jpa怎么实现新增获取id_JPA实体类有Id保存也会新增一条新的数据问题

jpa 保存带有id的 变成新增

前言:沉浸在代码中,没有跳出来看问题就容易钻牛角尖。还是遇见的问题太少。遇见的问题越多,知道的就会越多。

两个不同的实体类深拷贝,然后把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是否为空来判断是否是更新

<
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/739596
推荐阅读
相关标签
  

闽ICP备14008679号