20160509-hibernate--继承映射】的更多相关文章

几个月前,我在博问里面发了一个问题:http://q.cnblogs.com/q/64900/,但是一直没有找到好的答案,关闭问题以后才自己解决了,在这里分享一下. 首先我重复一下场景,博问里面举的动物的例子,这篇文章里为了和我的代码对应,换一个例子.假设要做一个企业的人员管理系统,有各种各样的用户,有的身份是老板,有的身份是员工,有的身份是保安,等等,这些用户可能有非常多非常多通用的行为,比如说修改年龄,比如说按姓名或者工号在全公司查找,并且大多数情况下我们不关心一个人的具体身份,这时候我希望…
三种继承映射关系.   1,SINGLE_TABLE   person student  teacher 在一个表中,student和teacher继承自person,通过一个DiscriminatorValue的内容来标识该条内容是student还是teacher.   package com.bjsxt.hibernate; import javax.persistence.DiscriminatorColumn; import javax.persistence.Discriminator…
继承映射在 Annotation 中使用 @Inheritance 注解,并且需要使用 strategy 属性指定继承策略,继承策略有 SINGLE_TABLE.TABLE_PER_CLASS 和 JOINED 三种. 一.SINGLE_TABLE SINGLE_TABLE 是将父类和其所有的子类集合在一块,存在一张表中,并创建一个新的字段来判断对象的类型. Person.java: @Entity @Inheritance(strategy=InheritanceType.SINGLE_TAB…
0 大家好.上次讲了关于hibernate中双向1-N的映射配置,可以参考:http://www.cnblogs.com/souvenir/p/3784510.html 实际项目中,对象间的关系比较复杂,除了上次讲的相互关联以外,这次我们要讲的就是关于对象的继承.hibernate如何来通过配置完成对象的继承? 1 比如有一个父类person,然后两个对应的子类,一个是teacher,一个是student.教师和老师除了拥有person这个类所有的属性以外,还会有一些自己独特的属性. hiber…
在面向对象的程序领域中,类与类之间是有继承关系的,例如Java世界中只需要extends关键字就可以确定这两个类的父子关系,但是在关系数据库的世界中,表与表之间没有任何关键字可以明确指明这两张表的父子关系,表与表是没有继承关系这样的说法的.为了将程序领域中的继承关系反映到数据中,Hibernate为我们提供了3中方案: 第一种方案:一个子类对应一张表. 第二种方案:使用一张表表示所有继承体系下的类的属性的并集. 第三种方案:每个子类使用一张表只存储它特有的属性,然后与父类所对应的表以一对一主键关…
先看三个类的继承关系,Payment是父类,CashPayment和CreditCardPayment是Payment的子类:   view plaincopy to clipboardprint public class Payment { protected long id; private String amount; // setter,getter } public class CashPayment extends Payment { private String cashType;…
问题: 我们在配置hibernate的时候,默认是会配置下面的两个属性的 <property name="hibernate.default_catalog">hibernate</property> <property name="hibernate.default_schema">test</property> 但是问题来了,在使用hibernate处理继承关系的时候,出现 WARN: SQL Error: 106…
一个主表,其他的表每个都有自己的表来装填自己特有的部分,共同的部分就放在主表中.   package com.bjsxt.hibernate; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Inheritance; import javax.persistence.InheritanceT…
Person,Student,Teacher各创建一个表,主键用一个中间表生成.   package com.bjsxt.hibernate; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Inheritan…
@Entity@Inheritance(strategy=InheritanceType.SINGLE_TABLE)@DiscriminatorColumn()public class Animal { } @Entity@DiscriminatorValue(value= "P")public class Pig extends Animal{ }…