私はHibernateを初めて使用し、作成したOracleデータベースに「単純な」ユーザー挿入を行おうとしています。
Netbeans Hibernateウィザードを使用して必要なすべてのファイルを作成しました:hibernate.cfg.xml、hibernate、reveng.xml、Users.hbm.xml、Users.java
oracle sql開発者にユーザーを挿入すると、Javaコードからこのユーザーを取得できます。しかし、ユーザーを挿入しようとすると、次のエラーが発生します:データ型の一貫性がありません:期待されるNUMBERがBINARYになりました。
部分的なUsers.hbm.xml:
<hibernate-mapping>
<class name="HibernateDB.Users" schema="SYSTEM" table="USERS">
<id name="userid" type="int">
<column name="USERID" precision="9" scale="0"/>
<generator class="increment"/>
</id>
...
部分的なUsers.java:
public class Users implements java.io.Serializable
{
private int userid;
private String username;
private String password;
private String firstName;
private String lastName;
private Serializable dateOfBirth;
private Serializable registrationDate;
...
部分的なinsertUserメソッド(すべてのパラメーターは文字列です):
session = HibernateUtil.currentSession();
Transaction tx = session.beginTransaction();
Calendar dOfBirth = Calendar.getInstance();
dOfBirth.set(Integer.parseInt(year_of_birth), Integer.parseInt(month_of_birth), Integer.parseInt(day_of_birth));
Calendar regDate = Calendar.getInstance();
Timestamp dOfBirthTS = new Timestamp(dOfBirth.getTimeInMillis());
Timestamp regDateTS = new Timestamp(regDate.getTimeInMillis());
Users user = new Users();
user.setUsername(username);
user.setPassword(password);
user.setFirstName(first_name);
user.setLastName(last_name);
user.setDateOfBirth(dOfBirthTS);
user.setRegistrationDate(regDateTS);
session.saveOrUpdate(user);
ans = user.getUserid();
tx.commit();
データベース内のユーザーテーブル:
USERID NUMBER(9,0) - the primary key
USERNAME VARCHAR(200)
PASSWORD VARCHAR(200)
FIRST_NAME VARCAHR(200)
LAST_NAME VARCHAR(200)
DATE_OF_BIRTH TIMESTAMP
REGISTRATION_DATE TIMESTAMP