我正在使用JPA/Hibernate。JPA循环引用。 “对象引用未保存的瞬态实例”
假设我有文件夹和文件。 每个文件夹可以包含更多的文件夹和文件。每个文件都知道它的根文件夹是什么(而不是父文件夹)。
@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;
...
}
我创建了一个新文件和一个新文件夹。我把文件放在文件夹中。 现在该文件位于文件夹“文件” - 集合中,并且该文件夹在文件“rootFolder” - 变量中被引用。
如果我坚持这一点,我得到“对象引用一个未保存的瞬态实例”或“在冲洗之前保存瞬态实例:entities.file.rootFolder - > entities.Category”(取决于先保存的内容)。
有一种方法我可以注释这个,所以它会工作不管我先保存什么!? 我可以以某种方式通过编程方式解决问题,插入第一个实体而不引用其他实体,然后插入另一个实体,然后放入参考中,但我认为这不是必需的。
我搜索了这个,但我所能找到的是@OneToMany与@ManyToOne结合,但在我的情况下,我无法使用它。一个文件夹不应该知道它是否是根文件夹。
我会很感激任何想法或指导教程。
感谢您的帮助! 另一个问题是,我已经有模块来保存这些对象(我需要使用它们)。有没有办法在他们周围手动包装一个事务? – fancy 2013-02-18 14:35:58