2011-11-02 37 views
0

我是新来的冬眠世界,仍然在学习它。我正在尝试使用hibernate在数据库中坚持一个类。这个类的对象在其客户类中可以有不同的含义。以下是类的定义,我想坚持:如何使用以多种不同方式使用的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

您必须首先将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

+0

非常感谢您的回答。如果我不想创建ENTITY表,那我该怎么办?而不是ENTITY类,我想创建名为CLIENT_LIST或EMPLOYER_LIST的表,其中包含id和name列。 – Shekhar

+0

它仍然是多对多的吗?我认为这是一对多的,但这不是解决方案。我会创建两个扩展'Entity'的类并映射它们。不可能在两个表上映射一个实体。 – powerMicha

+0

好吧,但然后我不得不不必要地创建这些子类,只是因为休眠不能做到这一点。实际上,早些时候我创建了不同的数据库模式,但我正面临着一些问题。所以我把它改成了上面的那个。我发布了关于SO的问题。这里是它的链接:http://stackoverflow.com/questions/7964417/unable-to-generate-tables-using-hibernate。请看看它。 – Shekhar

相关问题