在插入新記錄時,我的PersonalInfo對象的屬性與數據庫列不匹配。對象值與休眠表中的表列不匹配
我試過一些方法來做到這一點,到目前爲止我還沒有任何問題。
我已經試過以下
- 1.-
session.save(Object)
2:
session.createNativeQuery(sqlQuery)
他們都做工精細,用最後一個唯一的缺點是,表中有8字段,這意味着我必須編寫太多的代碼將每個參數設置到Query對象中。
現在我試圖使用
@SQLInsert
註釋,然後我得到了我前面提到的問題。 我真的不知道發生了什麼,它讓我覺得可能只有一個配置參數丟失或類似的東西。
我已經檢查我通過獲取從控制檯這個輸出傳遞正確的順序的信息。
PersonalInfo [userId=30, password=myPass, status=0, type=student, firstName=Francisco, lastName=Hernandez, secondLastName=Salgado, sessionId=]
Hibernate: INSERT INTO personal_info (userId, password, status, type, firstName, lastName, secondLastName, sessionId) VALUES(?, MD5(?) , ?, ?, ?, ?, ?, ?)
這是代碼從我PersonalInfo類片斷這表明了使用註釋的。
@Entity(name="personal_info")
@SQLInsert(sql="INSERT INTO personal_info (userId, password, status, type, firstName, lastName, secondLastName, sessionId)"
+ " VALUES(?, MD5(?) , ?, ?, ?, ?, ?, ?)")
public class PersonalInfo {
@Id
@Column(name = "userId")
private int userId;
@Column(name = "password")
private String password;
@Column(name = "status")
private int status;
@Column(name = "type")
private String type;
@Column(name = "firstName")
private String firstName;
@Column(name ="lastName")
private String lastName;
@Column(name ="secondLastName")
private String secondLastName;
@Column(name ="sessionId")
private String sessionId;
}
執行插入操作的方法。
public int save(PersonalInfo personalInfo){
session = sessionFactory.openSession();
session.beginTransaction();
int result = (Integer)session.save(personalInfo);
session.getTransaction().commit();
session.close();
return result;
}
最後的主要方法。
public static void main(String args[]){
SessionFactory sessionFactory = buildSessionFactory();
// I've ommited some attributes that have a default value so they're initialized within the constructor
PersonalInfo personalInfo= new PersonalInfoBuilder("Francisco","Hernandez","Salgado")
.withLogInInfo(30, "myPass")
.withType("student").build();
System.out.println(personalInfo);
new PersonalInfoDAO(sessionFactory).save(personalInfo);
}
除了輸出從我得到的PostgreSQL後插入。
作爲averybody可以看到的值不匹配的列。 很抱歉的表的列名,我決定做以西班牙語翻譯爲英語,使更多的人能夠幫助我
PersonalInfo [userId=30, password=myPass, status=0, type=student, firstName=Francisco, lastName=Hernandez, secondLastName=Salgado, sessionId=]
您是否嘗試從插入查詢中刪除md5? – aviad
我已經這樣做了,但我得到了相同的結果。 – Sandoval0992