当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何使用链接表在Hibernate中映射多对多列表》经验,为你挑选了2个好方法。

我想使用链接表在Hibernate中映射多对多.我有两个类,父类和子类,例如:

public class Parent{

private List _children;

//...getters and setters
}

我用三列的链接表(link_table) link_id,parent_idchild_id.数据库是SQL Server,id类型是uniqueidentifier.所以,我通常使用guid作为id字段.

如果这是要使用的正确标记,如何使用标记实现此功能?你知道有什么好的文件来完成这个吗?

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

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



1> Matt Lewis..:

我这样做是使用注释,特别是@ManyToMany和@JoinTable:

Hibernate Docs:

@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;
    }
}



2> Vincent Ramd..:

我认为不可能(或必须)将link_id主键添加到连接表.连接表通常由两个参与表的主键组成.

使用XML你需要这样的语法:

 
    ....
    
    
    
    
    ...
 


...

    
    

...

虽然我发现注释更好用.


这也需要我相信的索引列.
"索引列"与此上下文中的数据库索引非常不同.
推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有