我正在使用休眠。我想持久地在我的数据库中的表中添加一个新行。
我在我的动作类中使用的代码是:
try {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
u = new Users();
u.setAge(this.getAge());
u.setCity(this.getCity());
u.setEmail(this.getEmail());
u.setName(this.getUsername());
u.setPassword(this.getPassword());
u.setSex(this.getSex());
try {
session.save(u);
}
catch (Exception e) {
this.addActionError("Oops. An Error Encountered...! Email address already registered. Try with your new email address.");
return ERROR;
}
session.getTransaction().commit();
session.close();
} catch (Exception e) {
this.addActionError("Oops. An Error Encountered...!");
return ERROR;
}
该页面有时会显示外部捕获错误,有时会显示内部捕获错误。glassfish 服务器日志是:
WARNING: SQL Error: -1, SQLState: 42Z23
SEVERE: Attempt to modify an identity column 'UID'.
SEVERE: Could not synchronize database state with session
org.hibernate.exception.SQLGrammarException: could not insert: [beans.Users]
..
Caused by: java.sql.SQLSyntaxErrorException: Attempt to modify an identity column 'UID'.
我的表是“用户”,具有主键“UID”,它是自动生成的增量为 1。除了上述之外,还有许多字段是用 getter 检索的,但这些字段被赋予默认值作为创建行的表属性,所以我决定不为他们应用 getter 和 setter。我也没有为“uid”使用getter和setter,因为它是自动生成的。
有人可以指出可能是什么错误......?提前致谢。