具有相同类的Parent-Child的JPA映射

gpa*_*gpa 16 java orm hibernate jpa parent-child

我有以下表格:

FOLDER[
    id int,
    name varchar2(10),
    parent_folder_id int
]
Run Code Online (Sandbox Code Playgroud)

我想让Folder类具有父子关系.

Ósc*_*pez 26

我相信正确的映射将是:

@Entity
public class Folder {

    @Id
    @Column(name="PK_FOLDER")
    private int id;

    @Column(name="NAME")
    private String name;

    @ManyToOne
    @JoinColumn(name="FK_PARENT_FOLDER")
    public Folder parentFolder;

    @OneToMany(mappedBy="parentFolder")
    public List<Folder> subFolders = new ArrayList<Folder>();

}
Run Code Online (Sandbox Code Playgroud)

@OneToOne会的工作只有当每个家长有最多一个孩子,上面的代码适用于更一般的情况下,父母可以有许多儿童.另外,为了简单起见,我省略了get/set方法.

  • 两个集合都很好,List可能用于维护插入顺序,一个用于强制执行唯一性的集合 - 它实际上取决于特定情况,因为两者都是有效的,并且规范不强制使用一个而不是另一个.事实上,许多用于JPA映射的代码生成器默认使用ArrayLists来实现@OneToMany关系. (2认同)
  • 尝试删除此类实体时遇到问题。添加`orphanRemoval`标志为我解决了它。因此,它像这样:`@OneToMany(mappedBy =“ parentFolder”,orphanRemoval = true)` (2认同)