一对一关联: 1.一对一单向外间关联 a)Annotation: @OneToOne @JoinColumn(name="该类对应的数据库表中,外键的名称") *示例:在Husband类中 @OneToOne @JoinColumn(name="wifeId") public Wife getWife() { return wife; } b)xml:<many-to-one unique> 2.一对一双向关联 a)Annotation: @OneToOne(mappedBy="") *示例:Husband与Wife一对一双向关联 在Husband类中 @OneToOne @JoinColumn(name="wifeId") public Wife getWife() { return wife; } 在wife类中 @OneToOne(mappedBy="wife") public Husband getHusband() { return husband; } ****只要双向关联,必设mappedBy(name="") b)xml: <many-to-one name="student" column="studentId" unique="true"></many-to-one> <one-to-one name="stuIdCard" property-ref="student"></one-to-one> 示例:StuIdCard与Student一对一双向关联 在StuIdCard.hbm.xml配置文件中: <class name="com.bjsxt.hibernate.StuIdCard"> <id name="id"> <generator class="native"></generator> </id> <property name="num"/> <many-to-one name="student" column="studentId" unique="true"> </many-to-one> </class> 在Student.hbm.xml中 <class name="com.bjsxt.hibernate.Student" dynamic-update="true"> <id name="id"> <generator class="native"></generator> </id> <property name="name"></property> <property name="age" /> <property name="sex" /> <property name="good" type="yes_no"></property> <one-to-one name="stuIdCard" property-ref="student"></one-to-one> </class> 3.联合主键映射 a)Annotation: @JoinColumns( @JoinColumn(name="wifeId", referencedColumnName="id"), @JoinColumn(name="wifeName", referencedColumnName="name") ) Wife为联合主键(主键为id和name),WifePK主键类 **Wife类 @Entity @IdClass(WifePK.class) public class Wife { private int id; private String name; private int age; public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Id public int getId() { return id; } public void setId(int id) { this.id = id; } @Id public String getName() { return name; } public void setName(String name) { this.name = name; } } **WifePK类 public class WifePK implements Serializable {//**注意要继承Serializable并且重写xxx方法 private int id; private String name; 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; } } **Husband类 @Entity public class Husband { private int id; private String name; private Wife wife; @Id @GeneratedValue public int getId() { return id; } public String getName() { return name; } @OneToOne @JoinColumns( { @JoinColumn(name="wifeId", referencedColumnName="id"), @JoinColumn(name="wifeName", referencedColumnName="name") } ) public Wife getWife() { return wife; } public void setId(int id) { this.id = id; } public void setName(String name) { this.name = name; } public void setWife(Wife wife) { this.wife = wife; } } 4.组件映射 a)Annotation中: Husband 中的一个属性是Wife类 组件映射,一对一的,将Husband与Wife的属性放到一张表中 Husband类: @Entity public class Husband { private int id; private String name; private Wife wife; @Id @GeneratedValue public int getId() { return id; } public String getName() { return name; } @Embedded public Wife getWife() { return wife; } public void setId(int id) { this.id = id; } public void setName(String name) { this.name = name; } public void setWife(Wife wife) { this.wife = wife; } } Wife类: 不用配置! b)xml中: <class name="com.bjsxt.hibernate.Husband" > <id name="id"> <generator class="native"></generator> </id> <property name="name"></property> <component name="wife"> <property name="wifeName"></property> <property name="age"></property> </component> </class> 5.多对一单向关联 :在多的一方增加外键指向一的那方 **Group 与 User 多对一关系 a)Annotation: @Entity @Table(name="t_group") public class Group { private int id; private String name; @Id @GeneratedValue 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; } } @Entity @Table(name="t_user") public class User { private int id; private String name; private Group group; @ManyToOne @JoinColum(name="xxx")//映射成为其他名称 public Group getGroup() { return group; } public void setGroup(Group group) { this.group = group; } @Id @GeneratedValue 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; } } b)xml配置文件 **User.hdb.xml <class name="com.bjsxt.hibernate.User" table="t_user"> <id name="id"> <generator class="native"></generator> </id> <property name="name"></property> <many-to-one name="group" column="groupId" /> </class> **Group.hdb.xml <class name="com.bjsxt.hibernate.Group" table="t_group"> <id name="id"> <generator class="native"></generator> </id> <property name="name"></property> </class> 6.一对多单向关联 Group类中有一个属性是多那一方对象的集合 一般为HashSet对象 a)Annotation: @Entity @Table(name="t_group") public class Group { private int id; private String name; private Set<User> users = new HashSet<User>(); @Id @GeneratedValue 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; } @OneToMany @JoinColumn(name="groupId") ****注意如果只写OneToMany 不指定多那一方关联的外键的话,hibernate默认作为多对多处理, 即将会建立一张中间表 public Set<User> getUsers() { return users; } public void setUsers(Set<User> users) { this.users = users; } } @Entity @Table(name="t_user") public class User { private int id; private String name; @Id @GeneratedValue 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; } } 7.一对多,多对一双向关联 a)Annotation" @Entity @Table(name="t_group") public class Group { private int id; private String name; private Set<User> users = new HashSet<User>(); @Id @GeneratedValue 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; } @OneToMany(mappedBy="group") public Set<User> getUsers() { return users; } public void setUsers(Set<User> users) { this.users = users; } } @Entity @Table(name="t_user") public class User { private int id; private String name; private Group group; @ManyToOne public Group getGroup() { return group; } public void setGroup(Group group) { this.group = group; } @Id @GeneratedValue 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; } } b)xml: 8.多对多单向关系映射 @Entity public class Teacher { private int id; private String name; private Set<Student> students = new HashSet<Student>(); @Id @GeneratedValue 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_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; } } @Entity public class Student { private int id; private String name; @Id @GeneratedValue 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; } } 9.多对多双向关系映射 @Entity public class Teacher { private int id; private String name; private Set<Student> students = new HashSet<Student>(); @Id @GeneratedValue 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_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; } } @Entity public class Student { private int id; private String name; private Set<Teacher> teachers = new HashSet<Teacher>(); @ManyToMany(mappedBy="students") public Set<Teacher> getTeachers() { return teachers; } public void setTeachers(Set<Teacher> teachers) { this.teachers = teachers; } @Id @GeneratedValue 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; } }
您还没有登录,请您登录后再发表评论
Hibernate关联关系配置,一对一,一对多,多对多,联合主键等的配置
针对hibernate中关于对象间的关联关系的配置
Hibernate_关联关系映射配置
Hibernate_关联关系映射配置详解,希望能帮助广大java爱好者
详细javabean配置 博文链接:https://871421448.iteye.com/blog/1561798
介绍使用Hibernate注解来进行关联关系的配置,结合我的博客文章阅读更方便理解。
hibernate表之间的关联关系在配置文件如何体现
NULL 博文链接:https://dreamzhong.iteye.com/blog/1200915
由于上传最大是60m,这里只是上传关联的配置xml和实体类,环境搭建自己找度娘解决
导入直接提示,不怕再为写错而发愁了,主外键关联以做好
@ManyToOne批注有一个名为targetEntity的参数,该参数定义了目标实体名,通常不需要定义该参数,因为在大部分情况下默认值(表示关联关系的属性类型)就可以很好的满足需求了。不过下面这种情况下这个参数就显得有意义...
我培训用的 Hibernate课件, 个人能力范围内精心整理,图文并茂. 希望能对大家学习 Hibernate 提供帮助. 这是第二篇, 内容如下:Hibernate配置文件;jdbc.fetch_size;...关联关系映射:双向 1-N;继承映射
在hibernate中,通常配置对象关系映射关系有两种,一种是基于xml的方式,另一种是基于annotation的注解方式,熟话说,萝卜青菜,可有所爱,每个人都有自己喜欢的配置方式,我在试了这两种方式以后,发现使用...
在hibernate中,通常配置对象关系映射关系有两种,一种是基于xml的方式,另一种是基于annotation的注解方式,熟话说,萝卜青菜,可有所爱,每个人都有自己喜欢的配置方式,这个是xml配置的例子
7. 关联关系映射 7.1. 介绍 7.2. 单向关联(Unidirectional associations) 7.2.1. 多对一(many to one) 7.2.2. 一对一(one to one) 7.2.3. 一对多(one to many) 7.3. 使用连接表的单向关联...
Hibernate一对一数据关联 Hibernate下的多对多关系 Hibernate关系映射 Hibernate继承关系映射 Hibernate映射类型-主键生成器-核心API Hibernate3 插件Eclipse配置
hibernate基于主外键的一对多/多对一关联
3.2 Hibernate配置 3.3 日志配置 3.4 第一段代码 3.5 代码初解 第4章 Hibernate基础 4.1 Hibernate基础语义 4.2 基础配置 4.3 Hibernate O/R映射 4.4 数据关联 4.5 Hibernate数据检索 4.6 HQL实用技术 ...
案例目录: 01 01Hibernate_Handwork : 手工配置使用Hibernate,其中详细标了...07 07Hibernate_Mapping : Hibernate中的数据关联技术,是一个重点又是一个难点,演示了 一对一、多对一、一对多、多对多等几种情况。
相关推荐
Hibernate关联关系配置,一对一,一对多,多对多,联合主键等的配置
针对hibernate中关于对象间的关联关系的配置
Hibernate_关联关系映射配置
Hibernate_关联关系映射配置详解,希望能帮助广大java爱好者
详细javabean配置 博文链接:https://871421448.iteye.com/blog/1561798
介绍使用Hibernate注解来进行关联关系的配置,结合我的博客文章阅读更方便理解。
hibernate表之间的关联关系在配置文件如何体现
NULL 博文链接:https://dreamzhong.iteye.com/blog/1200915
由于上传最大是60m,这里只是上传关联的配置xml和实体类,环境搭建自己找度娘解决
导入直接提示,不怕再为写错而发愁了,主外键关联以做好
@ManyToOne批注有一个名为targetEntity的参数,该参数定义了目标实体名,通常不需要定义该参数,因为在大部分情况下默认值(表示关联关系的属性类型)就可以很好的满足需求了。不过下面这种情况下这个参数就显得有意义...
我培训用的 Hibernate课件, 个人能力范围内精心整理,图文并茂. 希望能对大家学习 Hibernate 提供帮助. 这是第二篇, 内容如下:Hibernate配置文件;jdbc.fetch_size;...关联关系映射:双向 1-N;继承映射
在hibernate中,通常配置对象关系映射关系有两种,一种是基于xml的方式,另一种是基于annotation的注解方式,熟话说,萝卜青菜,可有所爱,每个人都有自己喜欢的配置方式,我在试了这两种方式以后,发现使用...
在hibernate中,通常配置对象关系映射关系有两种,一种是基于xml的方式,另一种是基于annotation的注解方式,熟话说,萝卜青菜,可有所爱,每个人都有自己喜欢的配置方式,这个是xml配置的例子
7. 关联关系映射 7.1. 介绍 7.2. 单向关联(Unidirectional associations) 7.2.1. 多对一(many to one) 7.2.2. 一对一(one to one) 7.2.3. 一对多(one to many) 7.3. 使用连接表的单向关联...
Hibernate一对一数据关联 Hibernate下的多对多关系 Hibernate关系映射 Hibernate继承关系映射 Hibernate映射类型-主键生成器-核心API Hibernate3 插件Eclipse配置
hibernate基于主外键的一对多/多对一关联
3.2 Hibernate配置 3.3 日志配置 3.4 第一段代码 3.5 代码初解 第4章 Hibernate基础 4.1 Hibernate基础语义 4.2 基础配置 4.3 Hibernate O/R映射 4.4 数据关联 4.5 Hibernate数据检索 4.6 HQL实用技术 ...
7. 关联关系映射 7.1. 介绍 7.2. 单向关联(Unidirectional associations) 7.2.1. 多对一(many to one) 7.2.2. 一对一(one to one) 7.2.3. 一对多(one to many) 7.3. 使用连接表的单向关联...
案例目录: 01 01Hibernate_Handwork : 手工配置使用Hibernate,其中详细标了...07 07Hibernate_Mapping : Hibernate中的数据关联技术,是一个重点又是一个难点,演示了 一对一、多对一、一对多、多对多等几种情况。