我正在使用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;
...
}
如果我持久化,我会得到“对象引用一个未保存的瞬态实例”或“在刷新之前保存瞬态实例:Entities.file.rootFolder->Entities.Category”(取决于首先持久化的内容)。
我必须有一种方法来注释这一点,这样它就会起作用,不管我先保存什么!?我可以通过编程的方式来解决这个问题,首先插入一个实体,而不引用另一个实体,然后插入另一个实体,然后放入引用,但我不认为这是必需的。
我搜索了这个,但我能找到的只是@OneTomany和@ManyToOne组合在一起,但在我的情况下我不能使用它。文件夹不应该知道它是否是根文件夹。
我将非常感谢任何关于教程的想法或指导。
假设所有的映射都发生在一个事务中,或者更准确地说,在这两个事务之间没有刷新,那么这些映射和您描述的场景都没有问题。您描述的错误只发生在刷新时,这通常发生在事务提交时。它甚至在错误中告诉您,“在刷新之前保存瞬态实例”。不允许刷新部分保存的对象图。只要在刷新发生之前保存了图中的所有对象,就可以了。
我根据您的代码在Github上创建了一个工作示例。您可以浏览代码和/或克隆项目并使用以下方法运行它:
git clone git://github.com/zzantozz/testbed.git tmp
cd tmp/stackoverflow/14921963-hibernate-circular-reference
mvn -q compile exec:java -D exec.mainClass=com.foo.Main
我有一个数据库,有两个表Batchstatistics和ReconProcessDateTracker。我想了解他们之间的关系。我使用以下模型类使用hibernate实现这一点: } } 当我试图保存它时,我得到的错误对象引用了一个未保存的瞬态实例——在刷新之前保存瞬态实例:com。美国药典。实体TBLBatch统计
我有以下错误, 对象引用未保存的瞬态实例-在刷新之前保存瞬态实例:Nominee;嵌套异常是java.lang.IllegalStateException:org.hibernate.transientObjectException:对象引用未保存的瞬态实例-在刷新前保存瞬态实例:Nominee对象引用未保存的瞬态实例-在刷新前保存瞬态实例 所以在这里,当我获取employee对象时,我想要将指定
我真的很难解释为什么JPA不把我的@manytomy关系串联起来。我找到的所有答案都与缺少的cascade语句有关。但我确实有,而且仍然有: 原因:org.hibernate.瞬态对象异常:对象引用未保存的瞬态实例-在刷新之前保存瞬态实例:com.example.iaa.model.员工 代码基于本教程:https://hellokoding.com/jpa-many-to-many-relati
我正在使用Seam Framework。我有2个实体: Request.java 和请求事件.java 当我进行此交易时: 我得到了这个错误:
我有以下3种型号: 模式1:预订 请让我知道我在做什么错误。谢谢 通过更改GuestDetails保存预订对象的代码:
受雇的 Emploadable