Spring Boot 从 mysql 创建重复记录
Posted
技术标签:
【中文标题】Spring Boot 从 mysql 创建重复记录【英文标题】:Spring boot create a duplication of record from mysql 【发布时间】:2020-08-12 03:39:04 【问题描述】:我有数据记录
实体在主键中如下给出
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Id
@Column(name = "id",unique = true,nullable = false)
public Long id;
我尝试过甚至尝试过的对象映射器还有一些其他问题
Record abc =dao.findById(11);
abc.setId(Null); //not working
dao.save(abc) //not working
所以我想做的是一条主键为 1 的记录,保存时它应该另存为新的 记录?
【问题讨论】:
【参考方案1】:你应该创建一个新对象:
Record abc =dao.findById(11);
Record def = new Record(abc);
dao.save(def)
在 Record 类中,你应该有这样的构造函数:
public Record()
public Record(Record rec)
this.field1 = rec.field1;
【讨论】:
【参考方案2】:您可以通过创建另一个对象来做到这一点。使用 beanUtils 克隆对象...
试试这个:
Record abc =dao.findById(11);
Record copyAbc = new Record();
org.springframework.beans.BeanUtils.copyProperties(copyAbc,abc);
copyAbc.setId(null);
dao.save(copyAbc);
【讨论】:
【参考方案3】:你可以这样做
从 EntityManager 中分离您的实体 将 id 设置为 null 保存实体@PersistenceContext
EntityManager em;
...
em.detach(entity)
编辑:看来我的回答有一些问题。请不要使用它,我终于使用了接受的答案
【讨论】:
在发布我的答案 2 小时后,我发现此代码有时会出现问题。我没有进行更多调查,而是切换到接受的答案方法。我让我的答案在这里发布并进行了编辑以上是关于Spring Boot 从 mysql 创建重复记录的主要内容,如果未能解决你的问题,请参考以下文章
从零一起学Spring Boot之LayIM项目长成记 初见 Spring Boot
Spring Boot 实践折腾记:三板斧,Spring Boot下使用Mybatis
(汇总)Spring Boot 实践折腾记 & Spring Boot 2.x 实践记