Ejb多对多示例

 

多对多映射采取中间表连接的映射策略,建立的中间表将分别引入两边的主键作为外键。

EJB3对于中间表的元数据提供了可配置的方式,用户可以自定义中间表的表名,列名。

假设Teacher 和 Student是多对多的关系,具体元数据声明如下:

				
pubic class Teacher{ @ManyToMany(targetEntity = Student.class, cascade = CascadeType.PERSIST) @JoinTable(table = @Table(name = "M2M_TEACHER_STUDENT"), joinColumns = @JoinColumn(name = "TEACHER_ID", referencedColumnName = "ID"), inverseJoinColumns = @JoinColumn(name = "STUDENT_ID", referencedColumnName = "ID")) public List<Student> getStudents() {return students;} } public class Student{ @ManyToMany(targetEntity = Teacher.class, mappedBy = "students") public List<Teacher> getTeachers() { return teachers; } } 		
			

代码中元数据的说明:

元数据描述:

@ManyToMany(targetEntity = Student.class, cascade = CascadeType.PERSIST)

targetEntity = Student.class表明关系另一端的实体类型。cascade声明级联操作。

@JoinTable(table = @Table(name = "M2M_TEACHER_STUDENT"),

joinColumns = @JoinColumn(name = "TEACHER_ID", referencedColumnName = "ID"),

inverseJoinColumns = @JoinColumn(name = "STUDENT_ID", referencedColumnName = "ID"))

JoinTable配置中间表信息,它由3个部分组成:

1) table = @Table(name = "M2M_TEACHER_STUDENT") ,声明中间表的名字

2) joinColumns ,定义中间表与关系维护端的外键关系。

3) inverseJoinColumns,定义中间表与inverse端的外键关系.

 

你可能感兴趣的:(Ejb多对多示例)