null許容にしたい多対1の関係があります。
@ManyToOne(optional = true)
@JoinColumn(name = "customer_id", nullable = true)
private Customer customer;
残念ながら、JPAはデータベースの列をNOTNULLとして設定し続けます。誰かがこれを説明できますか?それを機能させる方法はありますか?永続性プロバイダーとしてHibernateを使用するJBoss7、JPA 2.0、およびPostgreSQL9.1データベースを使用していることに注意してください。
編集:
問題の原因を見つけました。どうやらそれは私が参照されたエンティティで主キーを定義した方法によるものですCustomer
:
@Entity
@Table
public class Customer {
@Id
@GeneratedValue
@Column(columnDefinition="serial")
private int id;
}
主キーにを使用@Column(columnDefinition="serial")
すると、それを参照する外部キーNOT NULL
がデータベースに自動的に設定されるようです。列タイプをとして指定するときに、これは本当に予想される動作serial
ですか?この場合、null許容の外部キーを有効にするための回避策はありますか?
前もって感謝します。