我有很多一对一的关系,我想可空:不能使@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