一个家装市场有各种登录的角色:设计师、业主……

这些角色有一些共同的字段,例如passWord,userName,age等等,但是分别又有自己的一些特殊字段,例如设计师要写自己的设计经历,业主可能要有自己的楼号等等。这在数据库设计上符合主扩展模式,也就是分成主表和扩展表,主表包含基本的信息,若干扩展表继承了主表的字段,同时增加了自己的独特字段。

这样所有用户的主键都遵循同一个序列,子表的外键关联主表的主键,也是自己的主键。

在JAP上,设计User实体为抽象的父级实体,Desing、Owner两个实体继承自User,这里有个知识点:JPA的映射策略,这里不在展开说,Internet上一搜一大把。我这里只应用InheritanceType.JOINED类型的继承关系。

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public abstract class User {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
……
} @Entity
public class Owner extends User {
private int buildNum;
……
}

可见子表Owner默认增加了一列ID作为键值使用

最新文章

  1. 收集一些关于OI/ACM的奇怪的东西……
  2. 利用node构建本地服务
  3. EditText根据焦点弹出软键盘
  4. BSGS算法_Baby steps giant steps算法(无扩展)详解
  5. Oracle学习整理
  6. spring MVC的困惑--url-pattern的/和/*有区别
  7. Oracle基础(八) 数据完整性
  8. Android端手机测试体系
  9. ACM——A + B Problem (2)
  10. HDU 1502 Regular Words DP+高精度
  11. Scala学习笔记--Akka
  12. docker基础入门之二
  13. Java 内部类和匿名内部类
  14. 打印zigzag矩阵
  15. RabbitMQ入门-消息派发那些事儿
  16. Python-Django-BMS-增删改查
  17. xcode8 iOS函数返回值使用警告
  18. 浅析python日志重复输出问题
  19. java工具类 获取包下所有类
  20. Java的transient关键字(转)

热门文章

  1. C++ Tr1中的正則表達式
  2. [Android UI] listview 自定义style
  3. c++ 哈希表(hash表)
  4. Mahout构建图书推荐系统【一起学Mahout】
  5. SpringMVC之HandlerMethodArgumentResolver和<mvc:argument-resolvers>
  6. 织梦(DEDE)CMS V5.3 覆盖任意变量导致远程包含漏洞
  7. Resin install document
  8. C#-MessageBox全部函数重载形式及举例
  9. webuploader解决不能重复上传问题及一些常见问题处理
  10. 《java 语言程序设计》第3、4章编程练习