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;
    }

}