引起:org.hibernate.TransientObjectException:给定对象有一个空标识符:com.models.User on hibernate update

Fra*_*cis 3 java spring jsp hibernate hql

我正在尝试在数据库行中进行更新.我有这个例外

Caused by: org.hibernate.TransientObjectException: The given object has a null identifier: com.models.User
    at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.getUpdateId(DefaultSaveOrUpdateEventListener.java:270)
Run Code Online (Sandbox Code Playgroud)

这是我从jsp文件提交动作的控制器代码

// create new user object
            User user = new User();
            user.setName(name);
            user.setEmail(email);
            user.setActive(false);
             _userDao.update(user);
Run Code Online (Sandbox Code Playgroud)

这是我用daibernate会话工厂实用程序定义更新的dao

public void update(User user) {
        getSession().update(user);
    }
Run Code Online (Sandbox Code Playgroud)

// EDITTED: 这是我对用户实体类的映射

 @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "userId")
    private Integer id;
    @Column(nullable = false)
    private String name;
    @Column(unique = false, nullable = false)
    private String email;
    @Column(nullable = true)
    private boolean active;
Run Code Online (Sandbox Code Playgroud)

我无法更新电子邮件地址等于在jsp输入表单中输入的用户记录.请帮忙,这是我第一次用hibernate sessionfactory更新字段.

Bye*_*Bye 7

问题是您update在非现有实体上使用方法.如果要保存新创建的实体,则必须使用savesaveOrUpdate.

update 方法仅在实体已存在于DB中时才有效.