如何使用以多种不同方式使用的hibernate来持久化一个类?

时间:2011-11-02 07:00:48

标签: java hibernate hibernate-mapping

我是休眠世界的新手,还在学习它。我试图使用hibernate在数据库中持久化一个类。此类的对象在其客户端类中可以具有不同的含义。以下是我想要坚持的类定义:

class Entity {
    int id;
    String name;
}

class ClientClass {
    int clientClassID;
    List<Entity> employerList;
    List<Entity> clientList;
}

ClientClass的映射文件如下:

<hibernate-mapping package="com.foo.bar.model">
    <class name="ClientClass" table="CLIENTS">
        <id name="clientClassID" column="CLIENT_ID" type="integer"
            unsaved-value="0">
            <generator class="native" />
        </id>
        <set name="clientList" table="PROJECT_CLIENTS" cascade="all">
            <key column="CLIENT_ID" />
            <many-to-many column="CLIENT_ID" class="Entity" />
        </set>
        <property name="description" type="string" length="1000" />
        <set name="employerList" table="PROJECT_EMPLOYERS" cascade="all">
            <key column="CLIENT_ID" />
            <many-to-many column="EMPLOYER_ID" class="Entity" />
        </set>
         </class>
</hibernate-mapping>

我无法理解如何为Entity类编写映射? 请帮我。如果您需要更多详细信息,请告诉我们。

提前致谢!!!

1 个答案:

答案 0 :(得分:1)

您必须先将Entity映射为自己的班级。

<class name="Entity" table="ENTITY">
    <id name="id" column="id" type="integer"
        unsaved-value="0">
        <generator class="native" />
    </id>
    <property name="name" type="string" />
</class>

然后,您可以在其他类中将其添加为“多对多”关联。我真的不明白你的EMPLOYER_NAMECLIENT_ID上的映射应该如何运作。

有关进一步的文档,请参阅:http://docs.jboss.org/hibernate/core/3.3/reference/en/html/collections.html#collections-ofvalues