我认为这不是标准方法,因此任何提示都会有所帮助,这是我的代码:
@RequestMapping("/register")
public String register(Map<String, Object> map, @ModelAttribute("user") MyUser user) {
if(user.getLogin() == ""){
map.put("user", new MyUser());
}
else{
map.put("user", user);
map.put("result", userService.addMyUser(user));
}
return "register";
}
导致以下错误的原因:
org.hibernate.AssertionFailure: null id in org.mypackage.MyUser entry (don't flush the Session after an exception occurs)
这是MyUser
类:
@Entity
@Table(name="MyUser")
public class MyUser{
@Id
@Column(name="idMyUser")
@GeneratedValue
private Integer id;
@Column(name="login")
private String login;
@Column(name="password")
private String password;
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
最佳答案
尝试更改 @GenerateValue 的策略和/或生成器,请参阅 here和 here有关详细信息(例如,您可以尝试 @GeneratedValue(strategy = GenerationType.IDENTITY)
。您还可以检查数据库表是否设置为生成主键值。异常似乎表明当前策略未设置主键字段和/或发电机。
关于java - 简单对象在 Spring + Hibernate 中持久化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8112087/