问题背景
最近在做一个高校平台的基础模块,里面涉及到这样一个小问题:学生归属于某个学院;教师可能归属于某个学院,也可能归属于其他人事部门,如:学生处,学籍处等。怎样将这些个“机构”管理起来呢?
解决方案
方案一:
学院和人事机构单独建表,如果需要查询全部的“机构”,比如添加教师 时,需要选择其所属机构,就建立一个视图,将学院和人事机构统一起来
这种方案,需要建两个表和一个视图,太麻烦,被废了
方案二:利用继承映射
只需一张表,用一个鉴别字段来区分具体子类对象
建一个父类Institution(机构)
建两个子类College和Agency分别继承Institution
子类中无需写任何java代码,只需用JPA注解指定自己的鉴别值即可
如下图:
代码如下
Institution父类
@Entity
@Table(name="TB_Institution")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="type",discriminatorType=DiscriminatorType.STRING)
public class Institution implements Serializable{
@Id
@GeneratedValue(generator="hibernateuuidgenerator")
@GenericGenerator(name="hibernateuuidgenerator",strategy="uuid")
@Column(length=32,nullable=false)
private String institutionId;
@Column(length=50,nullable=false)
private String institutionCode;
@Column(length=50,nullable=false)
private String institutionName;
@Column(length=500,nullable=true)
private String remark;
@Column(nullable=false)
private Date createTime=new Date();
public String getInstitutionId() {
return institutionId;
}
public void setInstitutionId(String institutionId) {
this.institutionId = institutionId;
}
public String getInstitutionCode() {
return institutionCode;
}
public void setInstitutionCode(String institutionCode) {
this.institutionCode = institutionCode;
}
public String getInstitutionName() {
return institutionName;
}
public void setInstitutionName(String institutionName) {
this.institutionName = institutionName;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
}
College子类
@Entity
@DiscriminatorValue(value="c")
public class College extends Institution implements Serializable {
//该类中无需写任何java代码
}
Agency子类
@Entity
@DiscriminatorValue(value="a")
public class Agency extends Institution implements Serializable {
//该类中无需写任何实际代码
}
相关推荐
赠送jar包:hibernate-jpa-2.1-api-1.0.2.Final.jar; 赠送原API文档:hibernate-jpa-2.1-api-1.0.2.Final-javadoc.jar; 赠送源代码:hibernate-jpa-2.1-api-1.0.2.Final-sources.jar; 赠送Maven依赖信息文件:...
赠送jar包:hibernate-jpa-2.1-api-1.0.2.Final.jar; 赠送原API文档:hibernate-jpa-2.1-api-1.0.2.Final-javadoc.jar; 赠送源代码:hibernate-jpa-2.1-api-1.0.2.Final-sources.jar; 赠送Maven依赖信息文件:...
hibernate-jpa-2.1-api-1.0.0.final-sources.jar 源码 hibernate-jpa-2.1-api-1.0.0.final-sources.jar 源码
hibernate-jpa-2.0-api-1.0.1.Final.jar
hibernate-jpa-2.1-api-1.0.0.final.jar.zip,内含hibernate-jpa-2.1-api-1.0.0.final.jar
hibernate-jpa-2.1-api-1.0.0.Final.jar官方下载,请放心使用
hibernate-jpa-2.0-api-1.0.1.Final-sources.jar hibernate jpa 源代码
JPA-Hibernate包, JPA-Hibernate包, JPA-Hibernate包, JPA-Hibernate包, JPA-Hibernate包, JPA-Hibernate包
java.lang.NoClassDefFoundError: javax/persistence/spi/ProviderUtil 或javax/persistence/entitylistener问题
赠送jar包:spring-data-jpa-2.0.9.RELEASE.jar; 赠送原API文档:spring-data-jpa-2.0.9.RELEASE-javadoc.jar; 赠送源代码:spring-data-jpa-2.0.9.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring-data-jpa...
hibernate-jpa-2.1-api-1.0.0.final-sources.jar.zip的源代码
JPA学习笔记-EJB-04JPA关联映射总结 JPA JPA关联映射JPA学习笔记-EJB-04JPA关联映射总结 JPA JPA关联映射
java运行依赖jar包
hibernate-jpa-2.0-api-1.0.1.Final-sources
赠送jar包:spring-data-jpa-2.0.9.RELEASE.jar; 赠送原API文档:spring-data-jpa-2.0.9.RELEASE-javadoc.jar; 赠送源代码:spring-data-jpa-2.0.9.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring-data-jpa...
drools-persistence-jpa-5.2.0.Final.jar drools
spring-data-jpa-reference1.3.pdf
jpa--2.持久化操作jpa--2.持久化操作jpa--2.持久化操作jpa--2.持久化操作jpa--2.持久化操作jpa--2.持久化操作jpa--2.持久化操作
jpa--13双向多多jpa--13双向多多jpa--13双向多多jpa--13双向多多jpa--13双向多多jpa--13双向多多jpa--13双向多多jpa--13双向多多