- 浏览: 22575 次
- 性别:
- 来自: 厦门
最新评论
(摘自互联网,备份)Hibernate实体关系:双向关联,mappedBy必设
注解方式
1、一对一单向
@Entity public class Husband{ @Id @GenerateValue pirvate int id; private String name; @OneToOne @JoinColumn(name="wifeId") private Wife wife; } @Entity public class Wife{ @Id @GenerateValue private int id; private String name; }
2.、一对一双向
@Entity public class Husband{ @Id @GenerateValue pirvate int id; private String name; @OneToOne @JoinColumn(name="wifeId") private Wife wife; } @Entity public class Wife{ @Id @GenerateValue private int id; private String name; @OneToOne(mappedBy="wife") private Husband husband; }
3.、一对多单向
package com.bjsxt.hibernate; import java.util.HashSet; import java.util.Set; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.OneToMany; import javax.persistence.Table; @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") //不加出现3张表 public Set<User> getUsers() { return users; } public void setUsers(Set<User> users) { this.users = users; } } package com.bjsxt.hibernate; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.ManyToOne; import javax.persistence.Table; @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; } }
4、多对一单向
package com.bjsxt.hibernate; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table; @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; } } package com.bjsxt.hibernate; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.ManyToOne; import javax.persistence.Table; @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; } }
5、一对多双向
package com.bjsxt.hibernate; import java.util.HashSet; import java.util.Set; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.OneToMany; import javax.persistence.Table; @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; } } package com.bjsxt.hibernate; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.ManyToOne; import javax.persistence.Table; @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; } }
6、多对多单向
@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; } } @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; } }
7、多对多双向
@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; } } @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; } }
XML配置
1、一对一单向
<class name="Person"> <id name="id" column="personId"> <generator class="native"/> </id> <many-to-one name="address" column="addressId" unique="true" not-null="true"/> </class> <class name="Address"> <id name="id" column="addressId"> <generator class="native"/> </id> </class>
2.、一对一双向
<class name="Person"> <id name="id" column="personId"> <generator class="native"/> </id> <many-to-one name="address" column="addressId" unique="true" not-null="true"/> </class> <class name="Address"> <id name="id" column="addressId"> <generator class="native"/> </id> <one-to-one name="person" property-ref="address"/> </class>
3.、一对多单向
<class name="Person"> <id name="id" column="personId"> <generator class="native"/> </id> <set name="addresses"> <key column="personId" not-null="true"/> <one-to-many class="Address"/> </set> </class> <class name="Address"> <id name="id" column="addressId"> <generator class="native"/> </id> </class>
4、多对一单向
<class name="Person"> <id name="id" column="personId"> <generator class="native"/> </id> <many-to-one name="address" column="addressId" not-null="true"/> </class> <class name="Address"> <id name="id" column="addressId"> <generator class="native"/> </id> </class>
5、一对多双向
<hibernate-mapping> <class name="com.bjsxt.hibernate.Group" table="t_group"> <id name="id"> <generator class="native"></generator> </id> <property name="name"></property> <set name="users" inverse=”true”> <key column="groupId"></key> //与<many-to-one>的column一致 <one-to-many class="com.bjsxt.hibernate.User"/> </set> </class> </hibernate-mapping> <hibernate-mapping> <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"></many-to-one> </class> </hibernate-mapping>
6、多对多单向
<hibernate-mapping> <class name="com.bjsxt.hibernate.Student"> <id name="id"> <generator class="native"></generator> </id> <property name="name"></property> </class> </hibernate-mapping> <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>
7、多对多双向
<hibernate-mapping> <class name="com.bjsxt.hibernate.Student"> <id name="id"> <generator class="native"></generator> </id> <property name="name"></property> <set name="teachers" table="t_s" inverse=”true”> <key column="student_id"></key> <many-to-many class="com.bjsxt.hibernate.Teacher" column="teacher_id"/> </set> </class> </hibernate-mapping> <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>
发表评论
-
CXF simple frontend, allow all SSL certificates and set basic authentication cre
2011-09-26 11:53 1712(转自http://blog.progs.be/71/cxf- ... -
spring3+hibernate3.3.5出现的问题
2011-07-06 13:52 1470项目中使用spring3.0.3+hibernate3.3.5 ... -
illegal attempt to dereference collection
2010-10-26 08:58 1969使用中遇到此问题,网上搜索是版本的问题! 例如: from ... -
基于 Struts 2 拦截器实现细粒度的基于角色的存取控制(转)
2010-08-20 14:27 687本文介绍如何利用 Struts ... -
IntelliJ Cannot run web applications in Tomcat with port 8080
2009-08-13 23:07 1041杀毒软件是ESET NOD32,处理方法把ESET NOD32 ... -
在struts2中使用freemarker
2009-07-25 16:10 1557普通的struts2配置文件一 ... -
清理缓存--jsp
2009-04-24 17:55 1354response.setHeader("Pragma ...
相关推荐
hibernate实体映射文件字段设置默认值
Hibernate实体关联关系映射--学习总结,让同仁们更好的学习Hiebernate
hibernate 映射关系学习入门 多对多实体映射 源码
Hibernate实体关系映射
里面包含Hibernate实体映射的具体实例代码,还有相关教程笔记,喜欢的可以学习学习。
注:为节省空间,程序中需要的jar包,均在HibernateManytoManyMapCascadingSave.zip\HibernateManytoManyMapCascadingSave\lib\ <br>Hibernate 多对多实体映射实例 <br>学习Hibernate 实体映射的映射的好帮手...
Hibernate实体关系映射 一对一关系 一对多关系 多对多关系Hibernate实体关系映射
自动生成hibernate映射文件和实体类
Hibernate实体关联关系映射--学习总结.pdf
本速查表没有打成CHM! Hibernate实体映射表实用性较强! 希望大家喜欢!
教你如何用Hibernate生成映射文件和实体类,简单方便。
hibernate初学者学习入门之一对多实体映射关系源码
Hibernate 实体关联关系映射 学习总结 把一对一 一对多 单向 双向 主键 外键 链接表等讲的比较清楚
Middlegen-Hibernate-r5 Hibernate关系映射XML生成工具,MYSQL数据库的生成配置文件已经做好。
根据实体类生成简单的Hibernate映射文件,对不用Myeclipse的童鞋还是有用
将数据库表中的字段映射成hibernate实体类
根据数据库表生成实体、hibernate配置文件和实体映射文件
用MyEclipse自动生成hibernate映射文件和实体类