长话短说:
Recipe
包含
@OneToMany(cascade = {CascadeType.MERGE, CascadeType.REMOVE}, mappedBy = "recipe")
private Set<RecipeRow> rows = new HashSet<>();
Row
包含:
@ManyToOne(cascade = CascadeType.REFRESH)`
@JoinColumn(name = "recipe_id")
private Recipe recipe;`
Row
扩展了一个带有树结构的映射超类(即它包含一个相同类型的映射parent
字段)
在实体经理合并(配方)之前,所有行(及其信息)都在那里。当它合并时,它会抛出这个(关于行!!!):
Caused by: org.postgresql.util.PSQLException: ERROR: null value in column "name" violates
not-null constraint Detail: Failing row contains (11, 2015-08-22 13:53:33.276,
304170813849900523, 0, null, null, null, null, null, null, 1000, null,
null, null, null, null, null, null, null, null).
这几乎是不可能的,因为所有必填字段都在那里。
此外,(行表的)ID序列增加了,但DB(postgres)中没有持久的行。
我在这里遗漏了什么吗? 我的问题太宽泛了吗?
编辑1:
答案 0 :(得分:0)
好吧,所以这是一个初学者的错误,也是一个愚蠢的错误。
行有树形结构,对吗?保存的集合包含所有这些集合,如平面树(即列表)。
问题是顶行的抽象根作为父(不是暂时的),抽象根试图映射自己。
当然我在调试中没有注意到这一点,因为我只查看行,并且只查看它们的必填字段,而不是父项(这不是必需的)。
是的...