Hibernate教程03——类继承(每个类一张表)
来源:互联网 发布:vb flag 编辑:程序博客网 时间:2024/06/16 08:44
Hibernate教程03——类继承(每个类一张表)
一、简介
每个类的都会生成一张表,只有子类(实现类)才会插入数据,还有一些相关表,例如生成id的表等等。
二、父类Tree和相关annotation的配置
@Entity@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)public class Tree {@Id@GeneratedValue(strategy = GenerationType.TABLE)@Column(name = "id")private Long id;private String name;private String description; @ManyToOneprivate Tree parent; @OneToManyprivate List<Tree> children; public Long getId() {return id;} public void setId(Long id) {this.id = id;} public String getName() {return name;} public void setName(String name) {this.name = name;} public String getDescription() {return description;} public void setDescription(String description) {this.description = description;} public Tree getParent() {return parent;} public void setParent(Tree parent) {this.parent = parent;} public List<Tree> getChildren() {return children;} public void setChildren(List<Tree> children) {this.children = children;}}
三、子类Department
@Entity public class Department extends Tree { private String leader;private String secondLeader;private String link;private String remarkk;public String getLeader() {return leader;}public void setLeader(String leader) {this.leader = leader;}public String getSecondLeader() {return secondLeader;}public void setSecondLeader(String secondLeader) {this.secondLeader = secondLeader;}public String getLink() {return link;}public void setLink(String link) {this.link = link;}public String getRemarkk() {return remarkk;}public void setRemarkk(String remarkk) {this.remarkk = remarkk;}}
四、子类menu
@Entity public class Menu extends Tree {private String link;private String classname;public String getLink() {return link;}public void setLink(String link) {this.link = link;}public String getClassname() {return classname;}public void setClassname(String classname) {this.classname = classname;}}
五、测试类
@Testpublic void test02(){ Session session = HibernateUtil.getSessionfactory().getCurrentSession(); session.beginTransaction(); Department tree = new Department(); tree.setName("信息中心"); tree.setDescription("信息中心"); tree.setLeader("刘备"); session.save(tree); Department tree2 = new Department(); tree2.setName("软件二室"); tree2.setDescription("软件二室"); tree2.setLeader("张飞"); tree2.setParent(tree); session.save(tree2); tree2 = new Department(); tree2.setName("软件二室"); tree2.setDescription("软件二室"); tree2.setLeader("关羽"); tree2.setParent(tree); session.save(tree2); tree2 = new Department(); tree2.setName("软件二室"); tree2.setDescription("软件二室"); tree2.setLeader("赵云"); tree2.setParent(tree); session.save(tree2); session.getTransaction().commit(); HibernateUtil.getSessionfactory().close();}@Testpublic void test03(){ Session session = HibernateUtil.getSessionfactory().getCurrentSession(); session.beginTransaction(); Menu tree = new Menu(); tree.setName("系统管理"); tree.setDescription("系统配置的一些管理"); tree.setLink("sys/admin"); session.save(tree); Menu tree2 = new Menu(); tree2.setName("用户管理"); tree2.setDescription("用户配置的一些管理"); tree2.setLink("sys/user"); tree2.setParent(tree); session.save(tree2); tree2 = new Menu(); tree2.setName("角色管理"); tree2.setDescription("角色配置的一些管理"); tree2.setLink("sys/role"); tree2.setParent(tree); session.save(tree2); session.getTransaction().commit(); HibernateUtil.getSessionfactory().close();}
六、数据库生成的表
七、department表中的数据
八、Menu表中的数据
九、注意事项
Id的生成策略不可以是auto和identity。我只测试了table这种生成策略,其他的没有测试。
0 0
- Hibernate教程03——类继承(每个类一张表)
- 【SSH快速进阶】——Hibernate继承映射:每个类映射一张表
- 【SSH快速进阶】——Hibernate继承映射:每个具体类映射一张表
- Hibernate系列之继承关系:每个类一张表
- Hibernate继承映射之每个类一张表
- Hibernate继承映射之每个具体类一张表
- hibernate继承结构中每个类一张表
- hibernate继承映射策略之每个具体类一张表
- hibernate继承关系映射方法(三)--每个具体类一张表TPC
- Hibernate学习笔记:继承映射之每个类继承结构一张表
- Hibernate 继承映射实现方式之每个具体类对应一张表
- Hibernate 继承映射实现方式之每个具体类对应一张表
- Hibernate映射类继承之每个类层次结构一张表(父子类共用一张表,一个映射文件)
- Hibernate映射类继承之每个带有联合的具体类一张表(每个子类各一张表,共用一个父类映射文件)
- Hibernate映射类继承之每个带有隐式多态的具体类一张表(每个子类各一张表,有各自的映射文件)
- 每个类一张表
- Hibernate学习笔记:混合使用每个继承结构一张表 和 每个子类一张表
- 继承------类表映射-------每个具体类一张表
- BOM对像
- 自动化管理工具Saltstack之软件管理(8)
- Android handler 可能会造成内存泄露
- Android教程之MediaStore
- 省时的浏览器同步测试工具browser-sync服务搭建
- Hibernate教程03——类继承(每个类一张表)
- 第六届福建省大学生程序设计竞赛 Problem B Common Tangents【几何】
- iOS面试题10
- android SharedPreferences加密(高级) (AES+base64+PBE)
- Mac OS X Install Docker
- 黑马程序员——异常笔记
- c++常见基础知识面试题
- CentOS 7.0 服务器安装
- Memcached的安装