我有很多一對一的關係,我想可空:不能使@ManyToOne關係可空
@ManyToOne(optional = true)
@JoinColumn(name = "customer_id", nullable = true)
private Customer customer;
不幸的是,JPA不斷設置我的數據庫中列NOT NULL。任何人都可以解釋嗎?有沒有辦法讓它工作?請注意,我使用JBoss 7,JPA 2.0和Hibernate作爲持久性提供者和PostgreSQL 9.1數據庫。
編輯:
,我發現我的問題的原因。顯然,這是由於我的方式定義在引用的實體Customer
主鍵:
@Entity
@Table
public class Customer {
@Id
@GeneratedValue
@Column(columnDefinition="serial")
private int id;
}
看來,使用@Column(columnDefinition="serial")
主鍵自動設置外鍵在數據庫中它引用到NOT NULL
。當將列類型指定爲serial
時,這真的是預期的行爲嗎?在這種情況下是否有一種解決方法來啓用可空的外鍵?
預先感謝您。
這確實是我考慮的解決方案應運而生。不幸的是,這並不支持從數據庫本身生成ID,而且這是手動插入數據時需要的功能(例如使用hibernate的import.sql)。幸運的是,我想我即將找到解決方案。我只是在做一些測試,如果成功,我會發布解決方案。謝謝你的幫助。 – vcattin 2013-03-23 23:34:19