Spring Boot从MySQL创建记录重复

时间:2020-04-28 10:42:21

标签: java spring-boot spring-mvc jpa spring-data-jpa

我有数据记录

实体在主键中给出如下

@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的记录,应该另存为新记录 记录吗?

3 个答案:

答案 0 :(得分:3)

您应该创建一个新对象:

Record abc =dao.findById(11);
Record def = new Record(abc);
dao.save(def)

在Record类中,您应该具有这样的构造函数:

public Record(){}
public Record(Record rec){
    this.field1 = rec.field1;
}

答案 1 :(得分:1)

您可以通过创建另一个对象来实现。使用beanUtils复制对象...

尝试一下:

        Record abc =dao.findById(11);
        Record copyAbc = new Record();
        org.springframework.beans.BeanUtils.copyProperties(copyAbc,abc);
        copyAbc.setId(null);
        dao.save(copyAbc);

答案 2 :(得分:0)

您可以这样做

  • 从EntityManager分离您的实体
  • 将id设置为null
  • 保存实体
@PersistenceContext
EntityManager em;

...

em.detach(entity)

编辑:看来我的回答有一些问题。请不要使用它,我终于使用了接受的答案