文档章节

hibernate继承映射

tuzibuluo
 tuzibuluo
发布于 2014/11/04 22:15
字数 560
阅读 128
收藏 6

   起初项目把用户表根据具体职能分为了多个表,设计了一个模块后发现统一继承到系统登录时需要设置一个角色选项,根据角色再去不同的用户表里面查询登录,遂发现这样做太为繁琐了,不设置角色选择就需要提供不同的角色的登录接口页面,思考下还是为各个用户类抽象出一个父类对象。

   根据Hibernate的三种继承关系,考虑到减小修改代码量,决定用下面的第3种方式去实现。

1,一个继承结构一张表,通过鉴别器区分记录属于哪个子类

2,基类一张表,每个子类一张表,基类存放公共属性,子类存放扩展属性

3,基类无表,每个子类一张表,存放所有属性

  抽象出来的父类没有表,所有具体用户表都有父类的公共字段,在每个具体用户表类的hibernate的配置文件添加了父类的公共属性,子类的id会继承父类的ID,想到每个具体类都有自己的主键ID,将父类的ID字段映射为UUID,具体类的主键字段为ID,

虽然这样能够进行HQL多态查询,但是无法在父类中抽象出具体类的获取主键的方法,思考下决定修改父类的实体对象,新增如下方法,这样具体的角色类就可以获取对应的主键ID了。

public String getSubclassID(){
        String id="-1";
        if(this instanceof BaseUser){
            id=((BaseUser)this).getId();
        }else if(this instanceof MemberInfo){
            id=((MemberInfo)this).getId().toString();
        }else if(this instanceof BusinessInfo){
            id=((BusinessInfo)this).getId().toString();
        }else if(this instanceof BusinessReceptionist){
            id=((BusinessReceptionist)this).getId().toString();
        }
        return id;
    }


虽然增加了抽象的父类,但是用户和角色的对应仍需要去具体的用户表查询登录,角色字段可以也抽象到父类中,这样就可以直接用户名,密码登录就知道对应的角色,前提是多个用户表的用户名必须唯一不重复,这样HQL多态查询才能查出唯一的登录用户。


© 著作权归作者所有

tuzibuluo
粉丝 3
博文 14
码字总数 9603
作品 0
香港
私信 提问
加载中

评论(0)

[翻译] hibernate映射继承关系(一):一张表对应一整棵类继承树

英文原址 网上这个主题的文章不在少数,这个系列的文章的部分价值在于给出了注解模式(Annotation)的例子。文章易懂,权当增强记忆,捎带着练习下翻译(翻译不当之处请指出)。 Hibernate中...

lwei
2012/05/22
1.9K
0
史上最简单的Hibernate4视频教程(附源码和笔记)

Hibernate4是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合...

2846613430
2016/04/08
1.1K
0
Hibernate学习4--Hibernte的映射关系(二)

上一节我们主要研究下了Hibernate中的一一映射和多对一映射,这节我们看下Hibernate中的其他几种映射,包括一对多映射,多对多映射,复合主键映射及继承映射。 第一种是一对多映射,“一对多...

王小明123
2014/04/20
94
0
4.1 Hibernate概述

Hibernate是一个开源的对象关系映射框架,它对JDBC进行了轻量级的封装(未完全封装),使程序员可以使用面向对象的编程思想来操纵数据库。Hibernate是一个对象/关系映射的解决方法,简单的说...

JerryPan
2016/02/26
216
0
hibernate笔记--继承映射关系的三种实现方式

单表继承映射(一张表):   假设我们现在有三个类,关系如下:   Person类有两个子类Student和Teacher,并且子类都具有自己独有的属性.这种实体关系在hibernate中可以使用单表的继承映射来建表...

冬至饮雪
2016/03/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Tomcat优化配置

启动tomcat,访问配置: http://localhost:8080/manager/status

小小小施爷
18分钟前
51
0
如何更改为旧版本的Node.js

我在Ubuntu 10.10上运行Node.js版本v0.5.9-pre 。 我想使用v0.5.0-pre版本。 如何回滚到旧版本的节点? #1楼 用于管理Node的多个版本的另一个好的库是N: https : //github.com/visionmedia...

技术盛宴
25分钟前
68
0
三极管工作原理

随着科学技的发展,电子技术的应用几乎渗透到了人们生产生活的方方面面。晶体三极管作为电子技术中一个最为基本的常用器件,其原理对于学习电子技术的人自然应该是一个重点。三极管原理的关键...

黑客画家
28分钟前
105
0
WordCounter for mac(字数统计器) v1.6.2

想要快速的完成mac电脑上的文档字数统计,字数统计器WordCounter mac版是您的首先,该软件可以查看您的写作统计,如字数,字数,句数,行数,段数等简单而强大,别犹豫了来macdown下载体验吧...

云不若
29分钟前
47
0
mybatis-generator-maven-plugin:Communications link failure

使用 mybatis-generator 的 maven 插件可能会报出如下问题 Failed to execute goal org.mybatis.generator:mybatis-generator-maven-plugin:1.3.7:generate (default-cli) on project MyProj......

恒宝乐园
30分钟前
69
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部