object引用未保存的瞬态实例在刷新之前保存瞬态实例

我有一个自我加入员工实体类,其id,name和ref列与self相关。 我想创建它的新实例并将其持久化到db。

起初我创建了一个Employee类的实例并将其命名为manager。 然后我从Employee表中获取了这些值的记录:Id = 1,Name =“A”,RefId = null并将这些值设置为manager对象。 之后我再次创建了Employee类的实例
并设置它的属性值如下:emp.Name =“B”,emp.Ref = manager。 最后我通过使用base.Add(resource)方法来坚持它。 那时Nhibernate引发了以下错误:“对象引用未保存的瞬态实例,在刷新之前保存瞬态实例”。

这是映射文件内容:

       class> 

请帮我解决这个错误。 谢谢

假设实体1是数据库中的现有记录,而实体2是您尝试创建的具有对实体1的引用的新记录。

Hibernate告诉您正在保存的新实体(实体2)具有对实体1(数据库中的实体)的引用,并且该实体1具有未保存的更改,必须先保存它们才能保存实体2.最简单的事情要做的是首先保存实体1,然后保存实体2.但是,我认为真正的问题是你如何获得Entity1的实例。

您说您创建了员工的实例,然后将其命名为manager,然后从employee表中获取记录。 如果您尝试从表中更新现有记录,为什么不首先获取实体,然后编辑它? 你为什么要实例化一个对象? 我不确定的另一件事是物体之间的关系是双向的。 也就是说,实体1具有FK到实体2,并且实体2具有到实体1的FK。如果是这种情况,则需要确保将“Ref”属性分配两次。 Entityy1.Ref = Entity2 AND ALSO Entity2.Ref = Entity1。