两个表之间的两个Grails关系-暂时对象异常

两个表之间的两个Grails关系-暂时对象异常,grails,gorm,hibernate-mapping,relationships,Grails,Gorm,Hibernate Mapping,Relationships,我在做一个家谱项目。问题在于有两个表——人表和婚姻表 婚姻课是这样的: class Marriage implements Serializable{ Person husband Person wife String notes } Class Person{ //lots of members Marriage parents } 主键是丈夫.id和妻子.id person类如下所示: class Marriage implements Serializable{ Pers

我在做一个家谱项目。问题在于有两个表——人表和婚姻表

婚姻课是这样的:

class Marriage implements Serializable{
 Person husband
 Person wife
 String notes 
}
Class Person{
 //lots of members
 Marriage parents
}
主键是
丈夫.id
妻子.id

person类如下所示:

class Marriage implements Serializable{
 Person husband
 Person wife
 String notes 
}
Class Person{
 //lots of members
 Marriage parents
}
除了向已创建但没有父对象的人员添加父对象(即更新该人员),所有操作都有效。为这个人增加合适的婚姻是没有问题的。从无到有地创造一个人,并为他增加一段婚姻,这很管用。我使用的代码基本相同。它适用于
save()
,但不适用于
update()

问题是:
org.hibernate.transientObject异常-对象引用未保存的临时实例-在刷新之前保存临时实例
:-它是婚姻对象。它存在于数据库中,并且清晰可见。使用Grails控制台访问它没有问题

我试过了
belongsTo
hasOne
,没办法


知道怎么办吗?我想保留复合密钥,它不会给我带来任何问题,也不会阻止同一对夫妇再次结婚——如果他们结婚了,便笺可以处理。

您在数据库中看到的内容不会导致
TransientObject异常

看起来您正试图保存一个
perso
实例,无法保存
marriage
实例。

打印出这两个对象的
错误
属性,看看它们是否可以保存

更糟糕的是,这个人和婚姻(两个其他人之间)都被保存并在数据库中可见。我用新的Hibernate 4和旧的Hibernate 3试过了,结果是一样的,更糟糕的是,人和婚姻(两个人之间)都被保存并在数据库中可见。我用新的Hibernate 4和旧的Hibernate 3进行了尝试,结果是一样的。创建一个新的人,并在创建时将已婚夫妇添加为他的父母,不会产生任何问题。只有当以前创建的没有父母的人更新为以前创建的已婚夫妇作为其父母时,才会发生这种情况。当我尝试从数据库检索该已婚夫妇时,甚至在将该夫妇添加为其父母并保存新的他之前,也会发生这种情况。共享一些代码,了解如何获取对象,将它们相互分配并保存/更新,但这不是一个优雅的解决方案。我只需执行Marriage.list()并遍历它,直到弹出正确的一个并返回它。这是Pair类:
得到了它,但它不是一个优雅的解决方案。我只需执行Marriage.list()并遍历它,直到弹出正确的一个并返回它。这是Pair类:类Pair实现可序列化的{Person-Human-Person-Worder-String notes静态映射={id组合:['Human','Worder']}}Person类:类Person{字符串名称字符串姓氏字符串性别对父母}没有属于或有很多。这会引起问题。它显示成对的人是他们自己的孩子。