Hibernate之多对多单向关联(ManyToMany)
2017-08-30 18:00
405 查看
(一)基于注解的配置方式:
关联表名:主表表名+_下划线+从表表名, 关联到主表的外键名:主表名+_下划线+主表中的主键列名. 关联到从表的外键名:主表中用于关联的属性名+_下划线+从表的主键列名.
以上规则对于双向一对多关联同样有效.
如果未指定关联表的名字以及外键的名字,Hibernate会自动设定。
如果想自己设定名字:可以通过@JoinTable(name="关联表名",joinColumns={@JoinColumn(name=“主表名”)},inverseJoinColumns={@JoinColumn(name="从表外键名")})
@Entity
public class Teacher {
private int id;
private String name;
private Set<Student> students = new HashSet<Student>();
@Id
@GeneratedValue
public int getId() {
return id;
}
@ManyToMany
@JoinTable(name="t_s",
joinColumns={@JoinColumn(name="teacher_id")},
inverseJoinColumns={@JoinColumn(name="student_id")}
)
public Set<Student> getStudents() {
return students;
}
public void setStudents(Set<Student> students) {
this.students = students;
}
}
(二)基于xml的配置方式:
Teacher.hbm.xml的配置:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.bjsxt.hibernate.Teacher">
<id name="id">
<generator class="native"></generator>
</id>
<property name="name"></property>
<set name="students" table="t_s">
<key column="teacher_id"></key>
<many-to-many class="com.bjsxt.hibernate.Student" column="student_id"/>
</set>
</class>
</hibernate-mapping>
关联表名:主表表名+_下划线+从表表名, 关联到主表的外键名:主表名+_下划线+主表中的主键列名. 关联到从表的外键名:主表中用于关联的属性名+_下划线+从表的主键列名.
以上规则对于双向一对多关联同样有效.
@Entity public class Store { @ManyToMany public Set<City> getImplantedIn() { ... } } @Entity public class City { ... //no bidirectional relationship(不是双向关联) }
如果未指定关联表的名字以及外键的名字,Hibernate会自动设定。
如果想自己设定名字:可以通过@JoinTable(name="关联表名",joinColumns={@JoinColumn(name=“主表名”)},inverseJoinColumns={@JoinColumn(name="从表外键名")})
@Entity
public class Teacher {
private int id;
private String name;
private Set<Student> students = new HashSet<Student>();
@Id
@GeneratedValue
public int getId() {
return id;
}
@ManyToMany
@JoinTable(name="t_s",
joinColumns={@JoinColumn(name="teacher_id")},
inverseJoinColumns={@JoinColumn(name="student_id")}
)
public Set<Student> getStudents() {
return students;
}
public void setStudents(Set<Student> students) {
this.students = students;
}
}
(二)基于xml的配置方式:
Teacher.hbm.xml的配置:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.bjsxt.hibernate.Teacher">
<id name="id">
<generator class="native"></generator>
</id>
<property name="name"></property>
<set name="students" table="t_s">
<key column="teacher_id"></key>
<many-to-many class="com.bjsxt.hibernate.Student" column="student_id"/>
</set>
</class>
</hibernate-mapping>
相关文章推荐
- hibernate @OneToMany @ManyToOne 单向关联实体类非主键属性(以及包含多个属性关联)
- Hibernate之一对多单向外键关联(OneToMany)
- Hibernate多对多单向关联(一个many-to-many)
- hibernate 多对一(Many-to-one)单向关联
- Hibernate关系映射(四)一对多单向关联@OneToMany Annotation方式
- hibernate单向一对多关联映射(one-to-many)XML与注解版
- hibernate学习4之one-to-many单向关联(不推荐)
- Hibernate 之many-to-one 单向多对一关联示例
- hibernate学习6之many-to-many单向关联
- Hibernate关系映射(六)多对多单向关联@ManyToMany Annotation方式
- [Hibernate]基于xml和annotation的many-to-many单向关联【学习笔记】
- Hibernate单向一对多关联(Unidirectional One-To-Many)要点
- hibernate单向多对一关联映射(many-to-one)XML与注解版
- Hibernate的单向OneToMany、单向ManyToOne
- Hibernate的many-to-many双向关联的配置办法
- [Hibernate]基于xml和annotation的many-to-many双向关联【学习笔记】
- 单向关联的oneTomany练习
- Hibernate 、多表关联映射 - 多对多关系映射(many-to-many)
- hibernate many to one 非主键关联
- hibernate many to one 非主键关联