Hibernate Annotation 多对多 配置
2012-09-17 16:37
120 查看
一个老师对应多个学生,一个学生有多个老师
t_student表
t_teacher表
t_teacher_student表
java实体类
t_student表
列名 | 数据类型 | PK | FK | 约束 | 备注 |
Id | Int | √ | PK | 主键 | |
name | Varchar(50) | 姓名 |
列名 | 数据类型 | PK | FK | 约束 | 备注 |
Id | Int | √ | PK | 主键 | |
name | Varchar(50) | 姓名 |
列名 | 数据类型 | PK | FK | 约束 | 备注 |
Id | int | √ | PK | 主键 | |
sid | int | √ | 学生id | ||
tid | int | √ | 老师id |
package com.kaishengit.pojo; import java.util.Set; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.ManyToMany; import javax.persistence.Table; import org.hibernate.annotations.Cache; import org.hibernate.annotations.CacheConcurrencyStrategy; @Entity @Table(name="t_teacher") @Cache(usage=CacheConcurrencyStrategy.READ_WRITE) public class Teacher { private int id; private String name; private Set<Student> studentSet; @Id @GeneratedValue(strategy=GenerationType.IDENTITY) public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @ManyToMany(mappedBy="teacherSet")//表t_teacher放弃维护,teacherSet是Student类里的属性名,一定要使一方放弃维护 public Set<Student> getStudentSet() { return studentSet; } public void setStudentSet(Set<Student> studentSet) { this.studentSet = studentSet; } }
package com.kaishengit.pojo; import java.util.Set; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.ManyToMany; import javax.persistence.Table; import org.hibernate.annotations.Cache; import org.hibernate.annotations.CacheConcurrencyStrategy; @Entity @Table(name="t_student") @Cache(usage=CacheConcurrencyStrategy.READ_WRITE) public class Student { private int id; private String name; private Set<Teacher> teacherSet; @Id @GeneratedValue(strategy=GenerationType.IDENTITY) public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @ManyToMany @JoinTable(name="t_teacher_student",joinColumns={@JoinColumn(name="sid")},inverseJoinColumns={@JoinColumn(name="tid")}) //注意:joinColumns是指自己表在关系表(t_teacher_student)中的外键,inverseJoinColumns 是对方表即t_teacher表在关系表中的外键 public Set<Teacher> getTeacherSet() { return teacherSet; } public void setTeacherSet(Set<Teacher> teacherSet) { this.teacherSet = teacherSet; } }
相关文章推荐
- 【hibernate框架】各种问题用注解Annotation和mxl配置的解决
- hibernate以Annotation方式oracle以及mysql数据库相结合的实体配置
- Hibernate3.5.4---java application的xml和annotation环境搭建(hibernate.cfg.xml配置文件说明,映射文件Student.hbm.xml说明
- 【Hibernate】Hibernate的在Eclipse+Mysql的配置、安装,纯Java,利用Annotation与HQL完成数据库的增删改查
- spring与hibernate整合配置基于Annotation注解方式管理实务
- hibernate使用annotation配置时将@Id配置到字段field上和get方法上的区别
- 整合Hibernate时Annotation的配置
- Spring3与Hibernate4整合,Spring中配置Hibernate基于XML和annotation的sessionFactory方式。
- HibernateEhcacheJgroups - 基于Annotation的集群缓存配置
- Hibernate多对一双向关联(Annotation配置)
- Hibernate annotation配置方式的MappedBy使用详解
- hibernate用注解(annotation)配置sequence
- Hibernate3.5.4---java application的xml和annotation环境搭建(hibernate.cfg.xml配置文件说明,映射文件Student.hbm.xml说明
- HibernateEhcacheJgroups - 基于Annotation的集群缓存配置
- 疑难杂症:org.hibernate.MappingException: Unknown entity,annotation配置Entity类报错
- 使用annotation配置hibernate(1)
- hibernate用注解(annotation)配置sequence
- 【hibernate框架】如何配置联合主键-XML与Annotation样例剖析
- 整理笔记---Hibernate的xml与Annotation配置映射关系
- Hibernate4.2.2使用Annotation配置