我正在尝试在数据库行中进行更新。我有这个例外
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更新字段。
答案 0 :(得分:7)
问题是您在非现有实体上使用num2
方法。如果要保存新创建的实体,则必须使用update
或save
。
saveOrUpdate
方法才有效。