Hibernate4:一个类映射两个表-如何在两个表上持久化一个对象?

Hibernate4:一个类映射两个表-如何在两个表上持久化一个对象?,hibernate,save,hbmxml,Hibernate,Save,Hbmxml,我让这个类Person映射两个表:Persons和PersonsAUD(审计): 但只插入第一行,不插入审核行;可能是休眠检查人员的状态并确认已保存 有没有可能强制hibernate在两个表中保存同一个对象 提前感谢。在第二次映射中 改变这个 <id name="idAudit" type="int"> 到 我强烈建议不要这样做。这很令人困惑。不仅对于Hibernate,而且以后它可能会给您(其他开发人员)带来更多问题。请让我们在POJO实体(而不是动态模型)中考虑这个问题,以

我让这个类Person映射两个表:Persons和PersonsAUD(审计):

但只插入第一行,不插入审核行;可能是休眠检查人员的状态并确认已保存

有没有可能强制hibernate在两个表中保存同一个对象

提前感谢。

在第二次映射中 改变这个

<id name="idAudit" type="int">


我强烈建议不要这样做。这很令人困惑。不仅对于Hibernate,而且以后它可能会给您(其他开发人员)带来更多问题。请让我们在POJO实体(而不是动态模型)中考虑这个问题,以便更清楚地说明这一点

会话将只调用insert一次,因为只有一个实例。一个对象具有一个唯一标识符。它不能被评价为一个人以外的任何东西

你的动态模型也是如此。插入后,尝试观察您的
HashMap
人员。应该有一个键“
$type$
”,它应该告诉您该实例(作为一个人)是如何评估的。它不能充当其他任何东西

建议的解决办法:
如果您需要将一组信息保存到两个表中,请使用ORM样式的更多方向。例如,
clone
person进入
newhashmap()
并保存两个独立的实体

谢谢你的回答,我也尝试过这个映射,但它不起作用,仍然只保存第一行。
session.save("Person", person);
session.save("PersonAUD", person);
<id name="idAudit" type="int">
<id name="id" type="int">
Person person = new Person();
// fill properties
session.save(person); // as a person
session.save(person); // as a person audit