如何在hibernate中使用两列作为主键

时间:2012-05-02 22:36:57

标签: hibernate mapping composite-primary-key

我有一个包含五列的表格。这两列一起构成了我的表的主键。我正在尝试使用hibernate实例化一个与该表对应的Entity类。问题是如何告诉hiberante主键不仅仅是类的一个字段而是两个字段。我不希望hiberante为我创建数据库架构,因为我已经使用所有必要的主键设置来创建它。

我已经阅读了复合键,但它认为这不适合我。毕竟,我只有一个表,我的代码中不会有一对多或类似的基数。

我试过这样的东西,显然是行不通的。

    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <hibernate-mapping>
       <class name="blog.Message" table="MESSAGES">
       <id name="title" column="MESSAGE_TITLE"></id>
       <id name="author" column="MESSAGE_AUTHOR"></id>
       <property name="body" column="MESSAGE_BODY"/>
         // ....AND TWO MORE FIELDS

    </class>
    </hibernate-mapping>

这样做的方法是什么?复合键是必须的吗? 提前致谢

1 个答案:

答案 0 :(得分:1)

理想情况下,如果可能的话,你应该避免使用具有休眠功能的自然键。如果你创建一个id列,Hibernate可以更好地工作,hibernate可以用它来管理行的标识。