Bra*_*don 7 java mapping hibernate
我想使用链接表在Hibernate中映射多对多.我有两个类,父类和子类,例如:
public class Parent{
private List<Child> _children;
//...getters and setters
}
我用三列的链接表(link_table) link_id,parent_id和child_id.数据库是SQL Server,id类型是uniqueidentifier.所以,我通常使用guid作为id字段.
<list />如果这是要使用的正确标记,如何使用标记实现此功能?你知道有什么好的文件来完成这个吗?
我目前正在获取ConstraintViolationException,但未能找到任何好的文档或示例.
我认为一个主要问题是:如何指定link_id在链接表中自动生成.
我这样做是使用注释,特别是@ManyToMany和@JoinTable:
@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;
    }
}
我认为不可能(或必须)将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>
虽然我发现注释更好用.
| 归档时间: | 
 | 
| 查看次数: | 24572 次 | 
| 最近记录: |