I have a many-to-one relationship that I want to be nullable:
@ManyToOne(optional = true)
@JoinColumn(name = "customer_id", nullable = true)
private Customer customer;
Unfortunately, JPA keeps setting the column in my database as NOT NULL. Can anyone explain this? Is there a way to make it work? Note that I use JBoss 7, JPA 2.0 with Hibernate as persistence provider and a PostgreSQL 9.1 database.
EDIT:
I found the cause of my problem. Apparently it is due to the way I defined the primary key in the referenced entity Customer
:
@Entity
@Table
public class Customer {
@Id
@GeneratedValue
@Column(columnDefinition="serial")
private int id;
}
It seems that using @Column(columnDefinition="serial")
for the primary key automatically sets the foreign keys referencing it to NOT NULL
in the database. Is that really the expected behavior when specifying the column type as serial
? Is there a workaround for enabling nullable foreign keys in this case?
Thank you in advance.
nullable = false
??false
? Whyfalse
, nottrue
? – Himyaritic