Jpa实体VO使用继承的实体的做法@MappedSuperclass注解的使用
在我们开发一个项目的时候,同城定义实体的时候,都会进行一些抽象,也就是面向对象的一些思想.1比如无论是数据实体还是其他类型的实体都会有id字段2.对于数据实体一般都会有创建人,创建时间,更新人,更新时间,备注等等。
这个时候我们想的肯定是将这些公共的抽象到公共的vo中去,然后具体的不同vo再继承这些公共的vo。
在JPA中因为每一个实体对应的是一个表,这时候就有可能出现虽然继承了,但是并不能扫描到那些在公共实体中的字段,这时候我们可以使用注解@MappedSuperclass,这个注解的作用就是将这个实体作为基类实体,继承它的实体被扫描的时候会自动扫描公共的这些字段。
BaseEntity:
package uap.web.persistence; import java.io.Serializable; import javax.persistence.Id;
import javax.persistence.MappedSuperclass; /**
*
*
* @author Hotusm
* @since 2016-03-18
* 实体支持类
*/
@MappedSuperclass
public class BaseEntity implements Serializable{ /**
*
*/
private static final long serialVersionUID = 1L;
@Id
protected String id; public String getId() {
return id;
} public void setId(String id) {
this.id = id;
} }
DataEntity:
package uap.web.persistence; import java.io.Serializable;
import java.sql.Date; import javax.persistence.Id;
import javax.persistence.MappedSuperclass; import com.fasterxml.jackson.annotation.JsonFormat; /**
*
*
* @author Hotusm
* @since 2016-03-18
* 因为创建人和更新人的关联关系比较复杂,所以在其中中没有定义
*/
@MappedSuperclass
public class DataEntity extends BaseEntity{
/**
*
*/
private static final long serialVersionUID = -3203004068002303110L; @Id
protected String id;
/**
* 创建时间
*/
@JsonFormat
protected Date createDate;
/**
* 更新时间
*/
@JsonFormat
protected Date updateDate; /**
* 备注
*/
protected String remark; public Date getCreateDate() {
return createDate;
} public void setCreateDate(Date createDate) {
this.createDate = createDate;
} public Date getUpdateDate() {
return updateDate;
} public void setUpdateDate(Date updateDate) {
this.updateDate = updateDate;
} public String getRemark() {
return remark;
} public void setRemark(String remark) {
this.remark = remark;
} public String getId() {
return id;
} public void setId(String id) {
this.id = id;
} }
然后我们在我们具体的VO中使用JPA注解就可以了,只是这些公共的字段不需要了。
Jpa实体VO使用继承的实体的做法@MappedSuperclass注解的使用的更多相关文章
- JPA 菜鸟教程 15 继承-一个表-SINGLE_TABLE
原地址:http://blog.csdn.net/JE_GE/article/details/53678422 继承映射策略 一个类继承结构一个表的策略,最终只生成一个表,这是继承映射的默认策略. 举 ...
- [转]C#反射,根据反射将数据库查询数据和实体类绑定,并未实体类赋值
本文来自:http://www.cnblogs.com/mrchenzh/archive/2010/05/31/1747937.html /****************************** ...
- EF Core 中多次从数据库查询实体数据,DbContext跟踪实体的情况
使用EF Core时,如果多次从数据库中查询一个表的同一行数据,DbContext中跟踪(track)的实体到底有几个呢?我们下面就分情况讨论下. 数据库 首先我们的数据库中有一个Person表,其建 ...
- Hibernate_day02--课程安排_主键生成策略_对实体类crud操作_实体类对象状态
Hibernate_day02 上节内容 今天内容 实体类编写规则 Hibernate主键生成策略 实体类操作 对实体类crud操作 添加操作 根据id查询 修改操作 删除操作 实体类对象状态(概念) ...
- 生成二维码 加密解密类 TABLE转换成实体、TABLE转换成实体集合(可转换成对象和值类型) COOKIE帮助类 数据类型转换 截取字符串 根据IP获取地点 生成随机字符 UNIX时间转换为DATETIME\DATETIME转换为UNIXTIME 是否包含中文 生成秘钥方式之一 计算某一年 某一周 的起始时间和结束时间
生成二维码 /// <summary>/// 生成二维码/// </summary>public static class QRcodeUtils{private static ...
- [NewLife.XCode]实体工厂(拦截处理实体操作)
NewLife.XCode是一个有10多年历史的开源数据中间件,支持nfx/netcore,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode. 整个系列教程会大量结合示例代码和 ...
- java解析导入excel表格转为实体类javabean,根据实体类中的中文名称
最近公司需求解析excel,一开始使用poi做的挺好的,后来直接上了几十万条数据的excel文件,内存直接溢出了,网上查到apache poi还提供了专门处理海量数据的方法,使用sax解析,果然用了内 ...
- JPA @MappedSuperclass注解的使用说明
基于代码复用和模型分离的思想,在项目开发中使用JPA的@MappedSuperclass注解将实体类的多个属性分别封装到不同的非实体类中. 1.@MappedSuperclass注解只能标准在类上:@ ...
- 二十、springboot之jpa开发@MappedSuperclass 注解说明
@MappedSuperclass使用条件: 当我们进行开发项目时,我们经常会用到实体映射到数据库表的操作,此时我们经常会发现在我们需要映射的几个实体类中,有几个共同的属性,例如编号ID,创建者,创建 ...
随机推荐
- Java-小练习简单银行程序
2练习1:创建一个简单的银行程序包 练习目标-Java 语言中面向对象的封装性及构造器的使用. 任务 在这个练习里,创建一个简单版本的(账户类)Account类.将这个源文件放入banking程序 ...
- tool list
http://www.pairwise.org/tools.asp 用例设计工具 组合测试工具pict 代码调试 Findbugs 介绍及使用方法 接口测试工具 webservices studi ...
- linux安全检查
1 ssh后门 检察语句: grep -E "user,pas|user:pas" /usr/bin/* /usr/local/sbin/* /usr/local/bin/* /b ...
- transform你不知道的那些事
transform是诸多css3新特性中最打动我的,因为它让方方正正的box module变得真实了. transform通过一组函数实现了对盒子大小.位置.角度的2D或者3D变换.不过很长时间内,我 ...
- Windows 系统下Git安装图解
简单来说Git是一个免费的.开源的版本控制软件,从功能上讲,跟我们比较熟悉的Subversion(SVN)这类版本控制软件没什么两样.由于工作的需求,需要在WinXP下安装git配合团队完成相应的工作 ...
- struts2DMI(动态方法调用)
struts2动态方法调用共有三种方式: 1.通过action元素的method属性指定访问该action时运行的方法 <package name="action" exte ...
- Android之自动文本输入识别提示
相信大家都熟悉自动识别提示吧,在我们的生活中随处可见,今天就让我为大家简单介绍一下它是如何设计的. 所谓自动识别输入即是根据用户输入的已有信息,为用户提示可能的值,方便用户完成输入.在Android设 ...
- (转)rlwrap真是一个好东西
在Linux下面使用sqlplus很不爽,上下键,退格键都不能用,严重降低生产效率. 某一天终于发现了这个rlwrap这个好东西,特写此文记录. 下载地址如下: http://utopia.knowa ...
- MemCache在win7上的可视化配置以及Nodejs/Net应用
惯例科普:MemCache是一套分布式的高速缓存系统,由LiveJournal的Brad Fitzpatrick开发,但目前被许多网站使用以提升网站的访问速度,尤其对于一些大型的.需要频繁访问数据库的 ...
- Oracle存储过程获取YYYY-MM-DD的时间格式
环境:Oracle 10g,11g 问题重现:PL/SQL中命令窗口下,发现存储过程得到的时间格式不符合预期要求. SQL> select sysdate from dual; SYSDATE ...