休止状態を使用しています。データベースのテーブルに新しい行を永続的に追加したいと考えています。
アクションクラスでコードを使用しています:
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 と setter を適用しないことにしました。また、「uid」は自動生成されるため、ゲッターとセッターは使用しませんでした。
誰かがエラーの原因を指摘できますか...? 前もって感謝します。