我创建了一个Object A {id:long(AutIncrement),name:String},我将使用hibernate保存Outupdate。
我想知道,在A保存之前,这将是生成的Id。我需要它,因为我需要在A中设置依赖于对象B的属性的属性,但是我还有B中的属性,具体取决于对象A.
这是一种循环依赖。当填充B时我需要A的id,当填充A时,我需要一个生成的B属性。
有没有办法知道保存A之前的ID,
提前致谢 RGD
答案 0 :(得分:0)
你无法访问id,直到刷新时间之后,你可以添加级联插入/更新到关系,但这可能会导致地狱,特别是当你有循环依赖时。 我会做@kdgregory所说的,改变你的表结构。
答案 1 :(得分:0)
正如kdgregory所说,一般的答案是不可能。这种循环依赖通常是数据库结构设计问题的标志。
话虽如此,如果你真的想这样做,你可以手动在你的数据库中声明一个序列,比如说hibernate主键生成策略是assigned
(这已经足够了)不包括任何发电机)。然后在你的应用程序中,当你创建一个新的A时,你首先从序列中获取它的id,把它作为你的对象,根据它做你需要的对象并最终坚持它。
但是要小心,作为持久B的时间,A的ID将是已知的,但显然数据库中不存在A.