我想使用链接表在Hibernate中映射多对多.我有两个类,父类和子类,例如:
public class Parent{ private List_children; //...getters and setters }
我用三列的链接表(link_table) link_id
,parent_id
和child_id
.数据库是SQL Server,id类型是uniqueidentifier.所以,我通常使用guid作为id字段.
如果这是要使用的正确标记,如何使用标记实现此功能?你知道有什么好的文件来完成这个吗?
我目前正在获取ConstraintViolationException,但未能找到任何好的文档或示例.
我认为一个主要问题是:如何指定link_id
在链接表中自动生成.
我这样做是使用注释,特别是@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; } }
我认为不可能(或必须)将link_id主键添加到连接表.连接表通常由两个参与表的主键组成.
使用XML你需要这样的语法:
.... ...
... ...
虽然我发现注释更好用.