hinernate 一对一、一对多、多对多举例
来源:互联网 发布:手机编程前景 编辑:程序博客网 时间:2024/04/28 07:22
需求分析一:
要求一个用户可以选择多个职位
详细设置:
设置原则:
1.用户类设置:
类中包含职位属性
//多对多
/**
* @Fields dutys : 职位集合
*/
@ManyToMany(mappedBy="users",fetch=FetchType.LAZY)
类中包含用户集合
//多对多
@ManyToMany
@JoinTable(name="nademo_staffduty",joinColumns = { @JoinColumn(name="dutyid")},inverseJoinColumns ={@JoinColumn(name="userid")})
private List<User> users = new ArrayList<User>();
要求一个用户对应一个用户详细 详细设置设置原则
1. 用户类中增加属性
//一对一
@OneToOne(cascade={ CascadeType.ALL},fetch=FetchType.LAZY) @JoinColumn(name = "userdetailid")
private UserDetail userDetail=new UserDetail();
需求分析三:
要求多个用户在一个部门
详细设置
设置原则
1.用户类中增加属性
//多对一
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="departmentid")
private NademoDepartment department;
需求分析四:
要求部门呈现树状结构, 部门含有子部门
详细设置
设置原则
部门类设置:
1.类头中声明
@Entity
@Table(name = "nademo_department")
2.类中新增以下属性
private String parentid;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="parentid",insertable= false,updatable= false,nullable=false)
private NademoDepartment parentDepartment;
@OneToMany(mappedBy="parentDepartment")
@Where(clause="isvalid=1")// 可有可无, 用于过滤可用部门
private List<NademoDepartment> child ;
需求分析五:
要求在同一张表中维护树状结构.
设置原则
以菜单类设置:
1.类中新增下面属性
@Column(nullable = false, name = "menucode")
private String menuCode;
@Column(name = "parentcode")
private String parentCode;
//单表设置关联关系
@OneToMany(mappedBy = "parentMenu", fetch = FetchType.LAZY)
@OrderBy("displayOrder")//可有可无,设置菜单显示顺序
private List<NademoMenuInfo> menuSet = new ArrayList<NademoMenuInfo>();
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "parentcode", referencedColumnName = "menucode", insertable = false, updatable = false)
private NademoMenuInfo parentMenu;
要求一个用户可以选择多个职位
详细设置:
设置原则:
1.用户类设置:
类中包含职位属性
//多对多
/**
* @Fields dutys : 职位集合
*/
@ManyToMany(mappedBy="users",fetch=FetchType.LAZY)
private List<Duty> dutys = new ArrayList<Duty>();
类中包含用户集合
//多对多
@ManyToMany
@JoinTable(name="nademo_staffduty",joinColumns = { @JoinColumn(name="dutyid")},inverseJoinColumns ={@JoinColumn(name="userid")})
private List<User> users = new ArrayList<User>();
注意:此时:Hibernate会自动创建 nademo_staffduty表.
要求一个用户对应一个用户详细 详细设置设置原则
1. 用户类中增加属性
//一对一
@OneToOne(cascade={ CascadeType.ALL},fetch=FetchType.LAZY) @JoinColumn(name = "userdetailid")
private UserDetail userDetail=new UserDetail();
需求分析三:
要求多个用户在一个部门
详细设置
设置原则
1.用户类中增加属性
//多对一
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="departmentid")
private NademoDepartment department;
需求分析四:
要求部门呈现树状结构, 部门含有子部门
详细设置
设置原则
部门类设置:
1.类头中声明
@Entity
@Table(name = "nademo_department")
2.类中新增以下属性
private String parentid;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="parentid",insertable= false,updatable= false,nullable=false)
private NademoDepartment parentDepartment;
@OneToMany(mappedBy="parentDepartment")
@Where(clause="isvalid=1")// 可有可无, 用于过滤可用部门
private List<NademoDepartment> child ;
需求分析五:
要求在同一张表中维护树状结构.
设置原则
以菜单类设置:
1.类中新增下面属性
@Column(nullable = false, name = "menucode")
private String menuCode;
@Column(name = "parentcode")
private String parentCode;
//单表设置关联关系
@OneToMany(mappedBy = "parentMenu", fetch = FetchType.LAZY)
@OrderBy("displayOrder")//可有可无,设置菜单显示顺序
private List<NademoMenuInfo> menuSet = new ArrayList<NademoMenuInfo>();
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "parentcode", referencedColumnName = "menucode", insertable = false, updatable = false)
private NademoMenuInfo parentMenu;
0 0
- hinernate 一对一、一对多、多对多举例
- Hinernate一对多(难点)
- 一对一,一对多,多对多,关系
- 关系:一对一、一对多,多对多。
- hibernate_一对一、一对多、多对多
- 一对一 一对多 多对多
- JPA一对一、一对多、多对多
- Hibernate一对一,一对多,多对多
- 一对多、一对一、多对多类图
- 一对多改成一对一
- ibatis 一对一,一对多
- MyBatis 一对一、一对多
- mybatis 一对一,一对多
- mybatis 一对一 一对多 多对一 多对多
- hinernate多对多需求分析
- 表关系(一对一,一对多,多对多)
- hibernate 一对一、一对多、多对多的情况
- Hibernate双向一对一,一对多,多对多关系映射
- HTML语法大全
- 【listview精深系列2】listview基础讲解
- zthread学习 实例十四 信号量机制
- 条款15:在资源管理类中提供对原始资源的访问
- SPRING技术内幕:深入解析SPRING架构与设计原理(第2版)-笔记(三)AOP概念
- hinernate 一对一、一对多、多对多举例
- My97DatePicker 输入框 的用法
- zthread学习 实例十五ZThread库基本结构的规纳
- Impala 教程
- java.io.FileNotFoundException: /mnt/sdcard/yuan.txt (Permission denied) at org.apache.harmony.luni.p
- java笔记--关于线程同步(5种同步方式)
- UML统一建模语言
- hihocoder #1099 : Constellations
- SPRING技术内幕:深入解析SPRING架构与设计原理(第2版)-笔记(四)AOP设计与实现