2016-12-17 13 views
1

新しいレコードを挿入しているときに、私の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としてenter image description here

。表の列名のため申し訳ありません は、私はより多くの人々が

PersonalInfo [userId=30, password=myPass, status=0, type=student, firstName=Francisco, lastName=Hernandez, secondLastName=Salgado, sessionId=] 
+0

挿入クエリからmd5を削除しようとしましたか? – aviad

+0

私はそれをしましたが、私は同じ結果を得ています。 – Sandoval0992

答えて

0

を私を助けることができるようになりますように、スペイン語から英語への翻訳を行うことを決め、以下の行がdatosPersonalesを保存し、mainメソッドからpersonalInfoません。

新しいPersonalInfoDAO(sessionFactory).save(datosPersonales);

personalInfoには正しい情報とdatosPosalesがありません。

+0

これはタイプミスです、datosPersonales実際にはpersonalInfoです – Sandoval0992

関連する問題