hibernate与mysql重写pk

zyfwsgd6  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(276)

嗯,我是第一次使用hibernate,出乎意料的是,它能工作。除了一件事:一个已经插入pk的insert会覆盖阻止它的记录。
这是我的简单代码:

@Controller
public class SimpleController {

    @Autowired
    UserRepository userRepository;

    @GetMapping("/mainPage")
    public String viewMainPage(){
        return "mainPage";
    }

    @GetMapping("/nuovo-utente")
    public String viewInserisciUtente(Model model){
        model.addAttribute("nuovoUtente", new Utente());
        return "nuovo-utente";
    }

    @PostMapping("/nuovo-utente")
    public String memorizzaUtente(@ModelAttribute Utente utente){
        userRepository.save(utente);
        return "output";
    }
}

@Entity
public class Utente {
    @Id
    private int id;

    private String citta=null;
    private String genere=null;
    private String data_nascita=null;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getCitta() {
        return citta;
    }

    public void setCitta(String citta) {
        this.citta = citta;
    }

    public String getGenere() {
        return genere;
    }

    public void setGenere(String genere) {
        this.genere = genere;
    }

    public String getData_nascita() {
        return data_nascita;
    }

    public void setData_nascita(String data_nascita) {
        this.data_nascita = data_nascita;
    }
}

任何帮助都将不胜感激。
编辑:我添加了实体类来帮助您理解我的问题。希望这能有所帮助。
谢谢大家

plicqrtu

plicqrtu1#

尝试将id生成策略添加到 id 现场。

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
ctrmrzij

ctrmrzij2#

如果您查看crudepository文档,那么我们没有update方法,但只有save方法,用于添加或更新现有记录。
在您的例子中,您可能已经更新了一个实体(除了它的id字段)并尝试保存该实体。因此,crudepository将更新给定id的现有值,因为它已经存在。

相关问题