我有一个多对一的关系,我希望它可以为空:
@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
吗?在这种情况下,是否有启用可空外键的解决方法?
先感谢您。