嗯,我是第一次使用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;
}
}
任何帮助都将不胜感激。
编辑:我添加了实体类来帮助您理解我的问题。希望这能有所帮助。
谢谢大家
2条答案
按热度按时间plicqrtu1#
尝试将id生成策略添加到
id
现场。ctrmrzij2#
如果您查看crudepository文档,那么我们没有update方法,但只有save方法,用于添加或更新现有记录。
在您的例子中,您可能已经更新了一个实体(除了它的id字段)并尝试保存该实体。因此,crudepository将更新给定id的现有值,因为它已经存在。