自引用实体插入两个记录

时间:2016-07-31 02:30:33

标签: hibernate spring-data-jpa

我有一个"类别"引用自我的实体。

mvn package

当我保存没有父母的实体时,它会插入"两个"记录:

| ID | NAME |位置| SLUG | PARENT_ID |

| 1 | 1 | 1 | 1 | 2 |

| 2 | null | 0 | null | null |

我想插入"一个" PARENT_ID为null的记录,但它将记录(id = 2)和记录(id = 1)作为子项插入。

我使用Spring-Data JPA接口API保存记录:

@Entity
public class Category extends NamedEntity {

    private String slug;

    private int position;

    @ManyToOne(cascade = { CascadeType.PERSIST })
    private Category parent;

    @OneToMany(mappedBy = "parent")
    private Set<Category> children = new HashSet<Category>();

    ... getters / setters ...

1 个答案:

答案 0 :(得分:0)

parent的映射更改为以下内容,但不会发生这种情况。

@ManyToOne
private Category parent;

你观察到这种行为的原因是CascadeType.PERSIST将为你创建一个新的空类别而不是Hibernate只是用空的父母创建子记录。