我是Hibernate的新手,我試圖對我創建的Oracle數據庫執行「簡單」用戶插入操作。不一致的數據類型:預計NUMBER得到BINARY
我創建的所有使用Netbeans的Hibernate嚮導所需的文件: hibernate.cfg.xml中,休眠,reveng.xml,Users.hbm.xml,Users.java
如果我插入用戶用的Oracle SQL Developer ,我可以從java代碼中獲取此用戶。但是,如果我試圖插入用戶,我得到的錯誤:不一致的數據類型:預期NUMBER得到二進制。
偏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
你可以接受你自己的答案來獲得聲望點。您需要在'左'邊緣以外的'counter'(當前爲0)選中複選標記。祝你好運。 – shellter