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注解就可以了,只是这些公共的字段不需要了。

时间: 2024-10-01 06:09:43

Jpa实体VO使用继承的实体的做法@MappedSuperclass注解的使用的相关文章

[转]C#反射,根据反射将数据库查询数据和实体类绑定,并未实体类赋值

本文来自:http://www.cnblogs.com/mrchenzh/archive/2010/05/31/1747937.html /***************************************** * 说明:利用反射将数据库查询的内容自动绑定 *       到实体类 * * 时间:1:49 2009-9-19 * * 程序员:王文壮 * ***************************************/ /****************数据库脚本***

实体类作为另一个实体类的属性

如果一个实体类作为另一个实体类的属性,如果对该属性赋值的时候直接赋一个对象就行了,如果有多个对象同时赋给那个属性 就可以用List集合去接收,就像微信开发里面的图文消息 ,如果回复的是多条图文消息就用list集合去装t它们. 今天早上被技术总监说了一顿,就是他将很多种类都写在一个文件里面,而我一般都是将类写在一个单独的文件里面,我很奇怪这种写法.在QQ群里和人讨论了一下,觉得类应该是单独的建一个文件去写,这样不管是后期维护,还是查阅修改,都会很方便.还有一种所有实体类加partial.需要手动改

分享一个需要拍照的界面可以直接继承的Activity,附带详细注解

需要拍照的界面可以根据自己项目需求直接继承该Activity,附带详细注解,拍照剪切专题会进行详细讲解,大结局篇给出一个完整的总结, public abstract class RequestWithTakePhotoActivity extends BaseActivity { private static final String IMAGE_UNSPECIFIED = "image/*"; private static final String IMAGE_TMP = "

Spring Data JPA 中使用Update Query更新实体类问题

在jpa中使用@Modifying 虽然事务已经能够更新,但是在循环更新的时候,执行modify语句后的查询的实体仍然是没有更新的. 执行完modifying query, EntityManager可能会包含过时的数据,因为EntityManager不会自动清除实体.只有添加clearAutomatically属性,EntityManager才会自动清除实体对象. @Modifying(clearAutomatically = true)

JPA初体验系列(三) 实体管理器简介

EntityManager 是用来对实体Bean 进行操作的辅助类.他可以用来产生/删除持久化的实体Bean,通过主键查找实体Bean,也可以通过EJB3 QL语言查找满足条件的Bean.实体Bean 被EntityManager管理时,EntityManager跟踪他的状态改变,在任何决定更新实体Bean的时候便会把发生改变的值同步到数据库中. 实体管理器是JPA中很重要的部分,它的具体功能和作用如下: 从图中可以看出,实体管理器与数据库交互主要体现在两方面: 一是负责将Java中的实体对象操

Spring Data JPA 查询结果返回至自定义实体

本人在实际工作中使用Spring Data Jpa框架时,一般查询结果只返回对应的Entity实体.但有时根据实际业务,需要进行一些较复杂的查询,比较棘手.虽然在框架上我们可以使用@Query注解执行我们自定义的sql语句,但是其返回值为List<Object[]> 类型,即多个Object数组的List集合,然后通过解析获取需要的数据,比较麻烦. 于是,开始考虑能否将查询结果返回至自定义的实体类,网上寻找解决方案并自己不断实践,遇到一些问题,跟大家分享下. 首先,介绍一种可行的方案: 1.自

抽象类(abstract)是否可以继承自实体类 ?

可以. 但是这个实体类必须有无参构造函数(默认的构造函数). 如: public class A { //这个构造函数必须要有(在没有构造函数重载时可以省略,因为运行时会为A添加默认构造函数) public A() { } public A(string n) { this.Name = n; } public string Name; } public abstract class B : A { public new string Name; }

[转][C#]c# 将JSON转化为list实体类,将list实体类转化为JSON字符串

原文地址:http://wo13145219.iteye.com/blog/2022667 using System; using System.Collections; using System.Configuration; using System.Data; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls

.net 根据匿名类生成实体类,根据datatable生成实体类,根据sql生成实体类

在开发中可能会遇到这几种情况 1.EF或LINQ查询出来的匿名对象在其它地方调用不方便,又懒的手动建实体类 2.通过datatable反射实体需要先建一个类 ,头痛 3.通过SQL语句返回的实体也需要先建一个类 ,头痛 4.如果通过代码生成器要写模版,需要安装或者不想生成一堆不用的类 为了解决上面的不便之处,我封装了一个实体生成类,可以扔到程序里面任意调用 封装类: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25