映射包含两个持久对象的对象

时间:2013-05-27 10:40:33

标签: java hibernate orm

我正在尝试映射一个包含两个持久对象的类(与数据库无关的对象),有没有办法做到这一点?如果有一个关键字/属性要使用,请提及它,我可以从那里开始。如果没有直接的方法,请您在高层次上简要解释替代步骤吗?

课程

class NotPersistent {
    Private Persistent1 persistent1;
    Private Persistent2 persistent2;
    ...
}

class Persistent1 {
    Private Integer id;
    Private String column1;
    ...
}

class Persistent2 {
    Private Integer id;
    Private String column1;
    ...
}

到目前为止我已完成的Hibernate映射

<class name="NotPersistent">
    <one-to-one class="Persistent1"></one-to-one>
    <one-to-one class="Persistent2"></one-to-one>
    ...
</class>

<class name="Persistent1">
    <one-to-one class="NotPersistent"></one-to-one>
    <id ...>
    <property ...>
    ...
</class>

<class name="Persistent2">
    <one-to-one class="NotPersistent"></one-to-one>
    <id ...>
    <property ...>
    ...
</class>

如果我在正确的轨道上,<class name="NotPersistent" ..

的属性应该是什么

1 个答案:

答案 0 :(得分:0)

好的,到目前为止,没有任何其他方法看起来正确。您使用one-to-one标记进行映射。

<class name="NotPersistent" table="xxx">
     <one-to-one name="persistent1" class="Persistent1" cascade="save-update"></one-to-one>

<class name="NotPersistent" table="xxx">
     <one-to-one name="nonPersistent" class="NonPersistent"></one-to-one>

由于我没有使用XML映射,因此我不知道确切的语法。但这种方法应该让你开始。另一个问题是实体是真的一对一吗?它看起来不太可能,因为这两个持久性实体之间的关系非常密切,它们可以直接使用Foreignkey和一个实体进行耦合。