Bra*_*don 7 java mapping hibernate
我想使用链接表在Hibernate中映射多对多.我有两个类,父类和子类,例如:
public class Parent{
private List<Child> _children;
//...getters and setters
}
Run Code Online (Sandbox Code Playgroud)
我用三列的链接表(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;
}
}
Run Code Online (Sandbox Code Playgroud)
我认为不可能(或必须)将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>
Run Code Online (Sandbox Code Playgroud)
虽然我发现注释更好用.
| 归档时间: |
|
| 查看次数: |
24572 次 |
| 最近记录: |