如何在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<>) 中声明复合主键
如何设置在 Java JPA/Hibernate 中不是自动生成的 @Id 主键?