无法在一对多关系hibernate注释中插入null

时间:2010-09-16 07:53:17

标签: java hibernate orm annotations

我有一个A类{Set b .....},它将B类的引用保存为Set。这是一对多的关系。 这两个类在oracle中都有音序器。我把cascade放在所有的hibernate注释中。当我保存类A时,它给出了我无法插入null B.a_id的错误。 A-id在我的数据库中不可为空。我怎么能坚持这种关系。

2 个答案:

答案 0 :(得分:9)

  

这是来自A-> B的单向关系。表B中的a_id列不可为空。当hibernate尝试保存B类时,它无法找到a_id的值。

嗯,您是否尝试制作JoinColumnnullable

@OneToMany 
@Cascade({CascadeType.ALL}) 
@JoinColumn(name="A_ID", nullable=false)
private Set<B> b;

另见

答案 1 :(得分:2)

我遇到了同样的问题,并使用A类中@OneToMany注释的mappedBy属性解决了这个问题:

@OneToMany(cascade = CascadeType.ALL, mappedBy = "m_a")
private Set<B> b;

这里,m_a是B类中引用A类的字段:

@JoinColumn(name = "aId", nullable = false)
@ManyToOne
private A m_a;

这样,@ JoinColumn只在一个地方指定,没有重复的代码。