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

Posted

技术标签:

【中文标题】如何在hibernate中使用两列作为主键【英文标题】:how to use two columns as primary key in hibernate 【发布时间】:2012-05-02 22:36:57 【问题描述】:

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

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

我尝试了类似的方法,但显然不起作用。

    <?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】:

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

【讨论】:

我不是 hibernate 方面的专家,所以我不确定您的答案是否是理想的方式,但我会这样做。

以上是关于如何在hibernate中使用两列作为主键的主要内容,如果未能解决你的问题,请参考以下文章

Hibernate 在 JoinTable (List<>) 中声明复合主键

如何使用主键作为JPA和Hibernate的外键引用?

如何设置在 Java JPA/Hibernate 中不是自动生成的 @Id 主键?

如何使用 Hibernate 在 MySQL 中获取自增主键值

如何使用 JPA 和 Hibernate 在非主键上连接表

如何使用 Hibernate 将一个表的主键用作另一个表的主键