Java Spring中的简单对象持久化&x2B;冬眠
我想这不是标准的方法,因此任何提示都会有所帮助,以下是我的代码:Java Spring中的简单对象持久化&x2B;冬眠,java,hibernate,spring,jakarta-ee,jpa,Java,Hibernate,Spring,Jakarta Ee,Jpa,我想这不是标准的方法,因此任何提示都会有所帮助,以下是我的代码: @RequestMapping("/register") public String register(Map<String, Object> map, @ModelAttribute("user") MyUser user) { if(user.getLogin() == ""){ map.put("user", new MyUser()); } else{
@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";
}
尝试更改@GeneratedValue的策略和/或生成器,有关详细信息,请参阅和(例如,您可以尝试
@GeneratedValue(策略=GenerationType.IDENTITY)
。您还可以检查数据库表是否设置为生成主键值。异常似乎表明当前策略和/或生成器未设置主键-字段。请为MyUser提供实体类,听起来主键字段(“@Id”)中可能缺少@GeneratedValue,在这种情况下,您需要手动设置。感谢您的回复,现在请检查编辑。谢谢,我在数据库中的id字段上实际上没有“自动增量”。但是,当表单为空时,我如何防止保存我的用户?(如果用户第一次在注册页面中输入)?我注意到,如果
条件变为false…您解决了主键问题吗?我从未尝试过在没有数据库生成主键的情况下使用Hibernate/JPA,您可能需要手动设置它们。对于条件失败,请不要使用“==”-与字符串进行比较(或者通常与任何非原语类型进行比较),这将检查两个对象是否是同一个对象,而不是它们的内容是否相等。因此,请使用“if(user.getLogin().equals(“”)”代替。好的,很快:现在我对if
条件有问题,它总是转到else
子句,我不知道应该有什么条件。。。
@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;
}
}