我正在开展家谱项目。问题在于两个表 - Person和Marriage表。
婚姻阶层看起来像这样:
class Marriage implements Serializable{
Person husband
Person wife
String notes
}
主键是husband.id
和wife.id
。
此人类看起来像这样:
Class Person{
//lots of members
Marriage parents
}
一切正常,除了将父母添加到已经创建但没有父母的人,即更新此人。让正确的婚姻加入这个人是没有问题的。从头开始创建一个人并为他添加婚姻。我使用相同的代码。它适用于save()
,但不适用于update()
问题在于:org.hibernate.TransientObjectException - object references an unsaved transient instance - save the transient instance before flushing
: - 它是Marriage对象。它存在于数据库中,清晰可见。使用Grails控制台我可以轻松访问它。
我已经尝试belongsTo
和hasOne
,没有去。
知道该怎么办?我想保留复合键,它不会给我带来任何问题,并阻止同样的两个人进入另一个婚姻 - 如果他们这样做的话,笔记可以处理。
答案 0 :(得分:0)
您在DB中看到的内容不会导致TransientObjectException
看起来您正在尝试保存perso
实例,无法保存marriage
实例
打印出两个对象的errors
属性,以查看它们是否可以保存