2013-07-09 47 views
0

我有一個這樣的實體:休眠被忽略插入過程中列

@Entity 
@Table(name = "PERSON_TB") 
public class Person implements Serializable { 

    private static final long serialVersionUID = 32423423432434; 

    @Id 
    @Column(name = "ID") 
    private Long personId; 

    @Id 
    @Column(name = "VALUE") 
    private String value; 

    @Column(name = "NAME") 
    private String name; 

    @Transient 
    Address address; 
    //getters/setters 
} 

這是我的代碼來創建一個實體:

public Person createPerson(long id, String name, String value) { 
    Person p = new Person(); 
    p.setId(id); 
    p.setName(name); 
    p.setValue(value); 
    return p; 
} 

在不同的方法:

personCrudSvc.create(createPerson(192L, "Joe", "xyz"); 

這是錯誤:

java.sql.SQLException: Attempt to insert null into a non-nullable column: column: VALUE 
table: PERSON_TB in statement [insert into PERSON_TB (NAME, ID) values (?, ?)] 

不知道這是否與此有關的bug:

Hibernate Bug

我有這樣創建的其他兩個表,這些都很好。

+0

顯然,我可以看到,Hibernate是爲了推錯了查詢數據庫。插入PERSON_TB(NAME,ID)的值(?,?) 應當插入PERSON_TB(NAME,ID,VALUE)的值(?,?,?) – Reddy

回答

0

試試這個

@Entity 
@Table(name = "PERSON_TB") 
public class Person implements Serializable { 

    private static final long serialVersionUID = 32423423432434; 

    @Id 
    @Column(name = "personId") 
    private Long personId; 

    @Id 
    @Column(name = "VALUE") 
    private String value; 

    @Column(name = "NAME") 
    private String name; 

    @Transient 
    Address address; 
    //getters/setters 
} 
+0

請告訴我差?字段名稱爲ID時,如何將名稱更改爲「personId」? –

+0

這不是您的代碼問題。這是Hibernate的一個問題。但是,此解決方法可能適用於您。否則,從註釋移動到映射xml。沒有其他解決方案,我知道 – Reddy

+0

Hibernate中的這個錯誤是什麼?你能詳細說明嗎? –