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

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

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

那么,你是否试图使JoinColumn不可为nullable

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

也可以看看

  • Hibernate核心参考指南
    • 6.2.1。 收集外键

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

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

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

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

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