首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用链接表映射Hibernate中的多到多列表

如何使用链接表映射Hibernate中的多到多列表
EN

Stack Overflow用户
提问于 2008-12-22 23:49:41
回答 4查看 26.1K关注 0票数 7

我想用一个链接表来映射Hibernate中的多到多。我有两个班,家长班和孩子班,例如:

代码语言:javascript
运行
复制
public class Parent{

private List<Child> _children;

//...getters and setters
}

我使用一个链接表(link_table),包括link_idparent_idchild_id三列。数据库是server,id类型是统一标识符。所以,我通常用guid作为id字段。

如果这是要使用的正确标记,那么如何使用<list />标记来实现这一点?你知道有什么好的文件可以完成这个任务吗?

我目前正在获得一个ConstraintViolationException,但还没有找到任何好的文档或示例。

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2008-12-23 02:49:50

我不认为向join表中添加link_id主键是可能的(或必要的)。联接表通常由两个参与表的主键组成。

使用XML时,您将需要如下语法:

代码语言:javascript
运行
复制
 <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>

尽管我发现注释更适合使用。

票数 5
EN

Stack Overflow用户

发布于 2008-12-23 01:30:42

我使用注释(特别是@ManyToMany和@JoinTable)来完成此操作:

Hibernate文档:

代码语言:javascript
运行
复制
@Entity
public class Employer implements Serializable {
    @ManyToMany(
        targetEntity=org.hibernate.test.metadata.manytomany.Employee.class,
        cascade={CascadeType.PERSIST, CascadeType.MERGE}
    )
    @JoinTable(
        name="EMPLOYER_EMPLOYEE",
        joinColumns=@JoinColumn(name="EMPER_ID"),
        inverseJoinColumns=@JoinColumn(name="EMPEE_ID")
    )
    public Collection getEmployees() {
        return employees;
    }
}


@Entity
public class Employee implements Serializable {
    @ManyToMany(
        cascade = {CascadeType.PERSIST, CascadeType.MERGE},
        mappedBy = "employees",
        targetEntity = Employer.class
    )
    public Collection getEmployers() {
        return employers;
    }
}
票数 8
EN

Stack Overflow用户

发布于 2008-12-23 00:33:08

我不确定对于现有的数据库和现有的数据,您是否可以轻松地完成这个任务。当您第一次连接时,Hibernate通常最好定义自己的数据模式。

我只使用了很多批注,但我认为hibernate文档提供了基于XML的示例:链接文本

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/387806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档