好吧,我是第一次使用Hibernate,但出乎意料的是,它可以工作。除了一件事:一个已经插入pk的插入将覆盖防止该插入的记录。
那是我的简单代码:
@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;
}
}
任何帮助将不胜感激。
编辑:我添加了实体类来帮助您理解我的问题。希望这会有所帮助。
谢谢大家
答案 0 :(得分:2)
如果您查看CrudRepository文档,那么我们没有更新方法,而只有保存方法,用于添加或更新现有记录。
在您的情况下,您可能已经更新了实体(其“ Id”字段除外)并尝试保存该实体。因此,CrudRepository将为给定ID更新现有值,因为它已经存在。
答案 1 :(得分:1)
尝试将ID生成策略添加到id
字段。
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;