java - 简单对象在 Spring + Hibernate 中持久化

标签 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{
        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 的策略和/或生成器,请参阅 herehere有关详细信息(例如,您可以尝试 @GeneratedValue(strategy = GenerationType.IDENTITY) 。您还可以检查数据库表是否设置为生成主键值。异常似乎表明当前策略未设置主键字段和/或发电机。

关于java - 简单对象在 Spring + Hibernate 中持久化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8112087/

相关文章:

java - 如何使用新的 Android 应用程序更新来更新现有的 SQLite 数据库表数据?

java - 软键盘在横向模式下不会自动显示

java - 如何为嵌入式 jetty/ Spring 安全启用 HTTP 摘要?

静态私有(private)变量的Java/Android垃圾回收

mysql - 复杂查询耗时 30 秒,无全表扫描

mysql - 使用 spring boot、hibernate 和 mysql 批量插入无法正常工作

java - 从 SQL 表中选择并联接(Select 语句 + Hibernate 代码)

spring - 如何在独立的 Turbine 应用程序中激活/turbine.stream 端点

java - 如何获取 URL 查询字符串值

java - 用户注销后 JSessionID 没有改变 - 这是安全问题吗?