一尘不染

如何在Hibernate中使用链接表映射多对多列表

hibernate

我想使用链接表在Hibernate中映射多对多。我有两个类,例如Parent和Child类:

public class Parent{

private List<Child> _children;

//...getters and setters
}

我用三列的链接表(link_table) link_idparent_idchild_id。该数据库是SQL
Server,并且ID类型是uniqueidentifier。因此,我通常将guid用于id字段。

你怎么能实现这个使用 <list />标签,如果这是要使用正确的标签?您知道有什么好的文档可以做到这一点吗?

我目前正在获取ConstraintViolationException,但找不到任何好的文档或示例。

我认为主要问题是:如何指定link_id要在链接表中自动生成的。


阅读 179

收藏
2020-06-20

共1个答案

一尘不染

我认为不可能(或没有必要)将link_id主键添加到联接表中。连接表通常将由两个参与表的主键组成。

使用XML,您将需要这样的语法:

 <class name="Parent">
    ....
    <list name="children" table="link_table">
    <key column="parent_id"/>
    <many-to-many column="child_id"
        class="Children"/>
    </list>
    ...
 </class>

<class name="Child">
...
<list name="parents" inverse="true" table="link_table">
    <key column="child_id"/>
    <many-to-many column="parent_id"
        class="Parent"/>
</list>
...
</class>

虽然我发现更好地使用注释。

2020-06-20