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

时间:2016-08-17 11:48:13

标签: java spring hibernate jsp 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)

这是我从jsp文件

提交动作的控制器代码
// create new user object
            User user = new User();
            user.setName(name);
            user.setEmail(email);
            user.setActive(false);
             _userDao.update(user);

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

public void update(User user) {
        getSession().update(user);
    }

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

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

1 个答案:

答案 0 :(得分:7)

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

仅当实体已存在于DB中时,

saveOrUpdate方法才有效。