我正在使用 JPA / Hibernate。
假设我有文件夹和文件。每个文件夹可以包含更多的文件夹和文件。每个文件都知道它的根文件夹是什么(不是父文件夹)。
@Entity
public class Folder{
...
@OneToMany
@JoinColumn("folder_id")
private List<Folder> folders;
@OneToMany
@JoinColumn("file_id")
private List<File> files;
...
}
@Entity
public class File {
...
@ManyToOne
private Folder rootFolder;
...
}
我创建了一个新文件和一个新文件夹。我把文件放在文件夹里。现在该文件位于文件夹“files”-collection 中,并且该文件夹在文件“rootFolder”-变量中被引用。
如果我坚持这一点,我会得到“对象引用了一个未保存的瞬态实例”或“在刷新之前保存瞬态实例:entities.file.rootFolder -> entities.Category”(取决于首先持久化的内容)。
必须有一种方法可以对此进行注释,因此无论我先保存什么,它都会起作用!?我可以以某种方式以编程方式解决它,在不引用另一个实体的情况下插入第一个实体,然后插入另一个实体,然后放入引用,但我认为这里不应该这样做。
我搜索了这个,但我能找到的只是@OneToMany 与@ManyToOne 的结合,但就我而言,我无法使用它。文件夹不应该知道它是否是根文件夹。
我会很感激任何关于教程的想法或方向。