新しいレコードを挿入しているときに、私のPersonalInfoオブジェクトの属性がデータベースの列と一致しません。オブジェクトの値がHibernateのテーブルの列と一致しません
これを行うにはいくつかの方法を試しましたが、これまでのところ問題はありませんでした。
私はそれらの両方が正常に動作
- 1.-
session.save(Object)
2.-
session.createNativeQuery(sqlQuery)
次試してみた、最後の1との唯一の欠点は、テーブルが持っているということです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;
}
そして最後にmainメソッド。
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