Spring Boot JPA:bingo.model.Group实例的标识符从1702更改为null

时间:2018-09-24 06:03:22

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

我有一个简短的问题:
上次保存有效(上次保存将更新)。
但是“首次保存”无法正常工作。 我无法通过这种方式插入,怎么可能?

@GetMapping(value = "/delete/{id}")
    public String delete(@PathVariable BigInteger id, Model model) {
        try {
                Group group = groupService.findById(id);
                group.setId(null);
                group.isLog(true);
                // This Save will be Insert Data
                groupService.save(group);

                group = groupService.findById(id);
                group.isLog(true);
                //This Save will be Update Data
                groupService.save(group);

            return "redirect:/accountsGroup/";
        } catch (Exception ex) {
            return "masters/accountsInfo/groups/index";
        }
    }

1 个答案:

答案 0 :(得分:0)

您不能仅将ID设置为null。

该实体处于托管状态,并且不会因为将ID设置为null而成为新实体。

正确的方法是在新实例中克隆实体状态。

您还可以尝试分离实体(EntityManager.detach),然后将ID设置为null。也许它将插入新行。但是正如我所说,这不是您应该这样做的方式。

在此处详细了解实体状态:https://vladmihalcea.com/a-beginners-guide-to-jpa-hibernate-entity-state-transitions/