程序员的量化交易之路(15)--Cointrader之EntityBase类(3)

2026年软考信息安全工程师备考指南 信息安全工程师是信息产业部和人事部举办的软考中新增开的一门考试。软考全称全国计算机技术与软件专业技术资格(水平)考试,这门新开的信息安全工程师分属该考试“信息系统”专业,位处中级资格,是信息产业部和人事部在最新的“国人厅发[2007]139号文件中新增的专业。2016年下半年,第一次开考信息安全工程师(中级)考试。 考试科目: 1.信息安全基础知识,考试时间为150分钟,笔试,选择题; ... 阅读详情

转载需要说明出处:http://blog.youkuaiyun.com/minimicall?viewmode=contents,http://cloudtrader.top/

1. 类代码

EntityBase是其他实体类的基类。在这里我们先将代码贴出。需要说明的是,有些实体类是需要映射到数据库的。需要JPA基础,或者Hibernate基础。

这个类就是包含一个Id,唯一标示、还有就是一个版本号。利于升级。

@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
@MappedSuperclass
public abstract class EntityBase implements Serializable {


    /**
     * 
     */
    private static final long serialVersionUID = -7893439827939854533L;


    @Id
    @Column(columnDefinition = "BINARY(16)", length = 16, updatable = false, nullable = false)
    public UUID getId() {
        ensureId();
        return id;
    }


    @Version
    private Long version;


    public Long getVersion() {
        return version;
    }


    public void setVersion(Long version) {
        this.version = version;
    }


    @Override
    public boolean equals(Object o) {
        // generated by IDEA
        if (this == o)
            return true;
        if (!(o instanceof EntityBase))
            return false;
        EntityBase that = (EntityBase) o;
        return id.equals(that.id);
    }


    @Override
    public int hashCode() {
        ensureId();
        return id.hashCode();
    }


    // JPA
    protected EntityBase() {
    }


    protected void setId(UUID id) {
        this.id = id;
    }


    private void ensureId() {
        if (id == null)
            id = UUID.randomUUID();
    }


    private UUID id;


}

2. @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)注解说明

    在JPA中,实体继承关系的映射策略共有三种:单表继承策略(table per class)、Joined策略(table per subclass)和Table_PER_Class策略。

下面我原本抄一篇别人的帖子。出处:http://zhuchengzzcc.iteye.com/blog/1679496

1.单表继承策略

   

    单表继承策略,父类实体和子类实体共用一张数据库表,在表中通过一列辨别字段来区别不同类别的实体。具体做法如下:

a.在父类实体的@Entity注解下添加如下的注解:

@Inheritance(Strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name=”辨别字段列名”)
@DiscriminatorValue(父类实体辨别字段列值)

 

b.在子类实体的@Entity注解下添加如下的注解:

@DiscriminatorValue(子类实体辨别字段列值) 

 

 

定义了一个父类

 

Java代码   收藏代码
  1. @Entity  
  2. @Inheritance(strategy = InheritanceType.SINGLE_TABLE)  
  3. @Table(name = "WINDOW_FILE")  
  4. @DiscriminatorColumn(name = "DISCRIMINATOR", discriminatorType = DiscriminatorType.STRING, length = 30)  
  5. @DiscriminatorValue("WindowFile")  
  6. public class WindowFile {  
  7.   
  8.     @Id  
  9.     @GeneratedValue(strategy = GenerationType.AUTO)  
  10.     private Integer id;  
  11.   
  12.     @Basic  
  13.     @Column(name = "NAME")  
  14.     private String name;  
  15.   
  16.     @Basic  
  17.     @Column(name = "TYPE")  
  18.     private String type;  
  19.   
  20.     @Basic  
  21.     @Column(name = "DATE")  
  22.     private Date date;  
  23.     //省略get set  
  24. }  

 

后定义2个子类

 

Java代码   收藏代码
  1. @Entity  
  2. @DiscriminatorValue("Folder")  
  3. public class Folder extends WindowFile {  
  4.   
  5.     @Basic  
  6.     @Column(name = "FILE_COUNT")  
  7.     private Integer fileCount;  
  8.     //省略get set  
  9. }  

 

Java代码   收藏代码
  1. @Entity  
  2. @DiscriminatorValue("Document")  
  3. public class Document extends WindowFile {  
  4.   
  5.     @Basic  
  6.     @Column(name = "SIZE")  
  7.     private String size;  
  8.     //省略get set  
  9. }  

 

 以上通过列DISCRIMINATOR的不同,区分具体父子实体。

 

实际表结构如下:

WINDOW_FILE  DISCRIMINATOR,ID,NAME,DATE,TYPE,SIZE,FILE_COUNT

 

当你使用WindowFile实体时,实际表的字段为DISCRIMINATOR='WindowFile',SIZE与FILE_COUNT永远是空

当使用Folder实体时,DISCRIMINATOR='Folder',SIZE永远是空,FILE_COUNT为实际值。

Document同理,与Folder类似。

 

2.Joined策略

 

    父类实体和子类实体分别对应数据库中不同的表,子类实体的表中只存在其扩展的特殊属性,父类的公共属性保存在父类实体映射表中。具体做法:

 

 

 

@Inheritance(Strategy=InheritanceType.JOINED)

 

子类实体不需要特殊说明。

 

 

Java代码   收藏代码
  1. @Entity  
  2. @Table(name = "T_ANIMAL")  
  3. @Inheritance(strategy = InheritanceType.JOINED)  
  4. public class Animal {  
  5.   
  6.     @Id  
  7.     @Column(name = "ID")  
  8.     @GeneratedValue(strategy = GenerationType.AUTO)  
  9.     private Integer id;  
  10.   
  11.     @Column(name = "NAME")  
  12.     private String name;  
  13.   
  14.     @Column(name = "COLOR")  
  15.     private String color;  
  16.     //省略get set  
  17. }  

 

Java代码   收藏代码
  1. @Entity  
  2. @Table(name = "T_BIRD")  
  3. @PrimaryKeyJoinColumn(name = "BIRD_ID")  
  4. public class Bird extends Animal {  
  5.   
  6.     @Column(name = "SPEED")  
  7.     private String speed;  
  8.     //省略get set  
  9. }  

 

Java代码   收藏代码
  1. @Entity  
  2. @Table(name = "T_DOG")  
  3. @PrimaryKeyJoinColumn(name = "DOG_ID")  
  4. public class Dog extends Animal {  
  5.   
  6.     @Column(name = "LEGS")  
  7.     private Integer legs;  
  8.     //省略get set  
  9. }  

 

 

实际表结构如下:

T_ANIMAL  ID,COLOR,NAME

T_BIRD  SPEED,BIRD(既是外键,也是主键)

T_DOG  LEGS,DOG_ID(既是外键,也是主键)

 

3.Table_PER_Class策略:

 

Table_PER_Class策略,父类实体和子类实体每个类分别对应一张数据库中的表,子类表中保存所有属性,包括从父类实体中继承的属性。具体做法:

只需在父类实体的@Entity注解下添加如下注解:

@Inheritance(Strategy=InheritanceType.TABLE_PER_CLASS)

 

Java代码   收藏代码
  1. @Entity  
  2. @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)  
  3. @Table(name = "T_VEHICLE")  
  4. public class Vehicle { // 基类  
  5.   
  6.     @Id  
  7.     // @GeneratedValue  
  8.     @Column(name = "ID")  
  9.     private Integer id;  
  10.   
  11.     @Column(name = "SPEED")  
  12.     private Integer speed;// 速度  
  13.     //省略get set  
  14. }  

 

Java代码   收藏代码
  1. @Entity  
  2. @Table(name = "T_CAR")  
  3. public class Car extends Vehicle {  
  4.   
  5.     @Column(name = "ENGINE")  
  6.     private String engine;// 发动机  
  7.     //省略get set  
  8. }  

 

一旦使用这种策略就意味着你不能使用AUTO generator 和IDENTITY generator,即主键值不能采用数据库自动生成。

 

实际表结构如下:

T_VEHICLE  ID,SPEED

T_CAR  ID,SPEED,ENGINE

 

3. @MappedSuperClass注解

@MappedSuperclass注解是为了在继承中,防止基类生成表格。在基类加上该标注,而不是@Entity,就可以只生成子类表,而子类表又含有基类的那些属性(列)。

一样为了更好的理解这东西,我抄别人的啦:http://blog.163.com/zzf_fly/blog/static/209589158201362643027706/,别人已经写的很好的,我就不想写。贴在这里主要是为了连贯性:

实体类baseEntity.java

package com.rock.cft.hibernate;

import java.util.Date;

import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.MappedSuperclass;

//@MappedSuperclass 用在父类上面。当这个类肯定是父类时,加此标注。如果改成@Entity,则继承后,多个类继承,只会生成一个表,而不是多个继承,生成多个表 @MappedSuperclass public abstract class BaseEntity {   private Integer id;// 数据库主键  private Date creationTime;//创建时间  private Date modificationTime;//修改时间    @Id  @GeneratedValue(strategy = GenerationType.AUTO)  public Integer getId() {   return id;  }  public void setId(Integer id) {   this.id = id;  }  public Date getCreationTime() {   return creationTime;  }  public void setCreationTime(Date creationTime) {   this.creationTime = creationTime;  }  public Date getModificationTime() {   return modificationTime;  }  public void setModificationTime(Date modificationTime) {   this.modificationTime = modificationTime;  }

  }

实体类Test_No1.java

package com.rock.cft.test.model;

import java.io.Serializable; import java.util.Date;

import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Table;

import com.rock.cft.hibernate.BaseEntity;

@Entity @Table(name="test_no2") public class Test_No1 extends BaseEntity implements Serializable {    private String name;  private int age;

 

 public String getName() {   return name;  }  public void setName(String name) {   this.name = name;  }  public int getAge() {   return age;  }  public void setAge(int age) {   this.age = age;  }   

}

实体类Test_NO2.java

package com.rock.cft.test.model;

import java.io.Serializable; import java.util.Date;

import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Table;

import com.rock.cft.hibernate.BaseEntity;

@Entity @Table(name="test_no2") public class Test_NO2 extends BaseEntity implements Serializable {      private Date testBri;    private String testAdr;    public Date getTestBri() {   return testBri;  }  public void setTestBri(Date testBri) {   this.testBri = testBri;  }  public String getTestAdr() {   return testAdr;  }  public void setTestAdr(String testAdr) {   this.testAdr = testAdr;  }    

   

}

 
这样在生成表的时候只生成了:test_no1、test_no2两张表,而且两张表中都含有id、creationTime、modificationTime三个属性
 
但是如果把@MappedSuperclass换成@Entity那么就会另外在生成一张baseEntity的表


 关于定义那些列的等具体细节,这里就不再说明了。


SAP CAP core data service 里 association 和 composition 的区别 我们进行 SAP CAP 开发时,在schema.cds里进行数据建模,可以使用 association 和 composition,来描述两个 entity 之间的关联关系。在 SAP BTP 的 Cloud Application Programming Model (CAP) 中,cds文件定义了数据模型,而和是用于建立实体关系的两种关键机制。理解它们的区别对于构建高效、清晰的 CAP 数据模型至关重要。下面,我们将通过严谨的逻辑推理,结合代码示例,深入分析和之间的核心差异。 阅读详情

相关推荐

海康威视Web3.0插件实战:快速部署摄像头实时预览方案

本文详细介绍了海康威视Web3.0插件的实战应用,包括快速部署摄像头实时预览方案的完整流程。从插件下载安装到摄像头连接配置,再到浏览器兼容性解决方案,帮助开发者和IT人员高效实现网页端监控功能。特别针对预览功能调优和多摄像头管理等高级应用提供了实用技巧。

weixin_29266679的博客 348

若依BaseEntity

若依BaseEntity

weixin_44558721的博客 9244

【FPGA】安路FPGA下载器驱动安装教程

#来自学渣的问候 最近正在参加19年的FPGA创新设计大赛,然后我们选择了安路(全名:上海安路信息科技有限公司)的 FPGA 开发板。安路算是国产FPGA中还不错的一家,和紫光一样,除了自主生产的FPGA,也开始拥有了自己的编译环境。 好了。言归正传,写这篇博客的原因是,前几天在安装 安路 的编译环境和下载器驱动的时候,出了点问题,弄得心烦意乱。所以打算解决之后写篇博客,避开这个神奇的问题。 首先...

Ninquelote的博客 2万+

BaseEntity作用

新建各种对象的时候,一般来说,有几个属性是所有对象共有的,比如说id,is_del,is_enable这些,然后设置一个基础对象,以后新建所有对象的时候都继承它,就省的每次都要写这些共有的属性了 ...

Fire_Sky_Ho的博客 1万+

Chromatix 7实战:从零开始调优ISP模块的完整流程(附常见报错解决方案)

本文提供了高通平台Camera调试工具Chromatix 7的完整实战指南。详细阐述了从环境准备、项目初始化、基础校正(如LSC、BPC)到核心ISP管线(Demosaic、CCM、HDR)及后处理(CAC、ANR)的调优全流程,并附带了常见报错(如“未初始化实例”)的解决方案,旨在帮助工程师建立系统性的调试方法论。

weixin_29290863的博客 623

Windows 11下manage-bde命令实战:BitLocker锁了别慌,手把手教你用命令行找回数据

本文详细介绍了在Windows 11系统下使用manage-bde命令解锁BitLocker加密驱动器的实战方法。通过命令行诊断、恢复密钥获取、解锁流程演示及高级故障排除,帮助用户在系统锁定后快速找回数据,特别适合IT技术人员和遇到紧急情况的用户。

weixin_30902251的博客 329

BaseEntity示例

除了这些注解外,BaseEntity类还定义了一些常用的属性和方法,如getId()和setId()用于获取和设置id字段的值,getCreateTime()和setCreateTime()用于获取和设置createTime字段的值等。总结起来,这段代码并没有对BaseEntity类进行重写,而是提供了一些通用的属性和方法,并使用了JPA注解来支持对象持久化和数据库映射。它使用了JPA注解来指定了数据库表的映射关系,并定义了一些常用的属性和方法。- @Id注解表示id字段是实体对象的唯一标识符。

dwagrds的博客 1380

硬件基础(4):(6)高精度ADC设计中模拟地与数字地的划分与连接

在实际 PCB 设计中,**接地与布线**对于获得干净的参考电压和高精度 ADC 测量至关重要。下面详细阐述**如何在硬件层面减少数字噪声耦合到模拟电路、保障参考电压的稳定性**。

FCZlll的博客 2646

BaseEntity实体类用法

BaseEntity实体类用法

weixin_45902573的博客 1752

YOLO26优化:AAAI2026 | 融合PartialNet Block的C3k2-YOLO高效目标检测网络 | 轻量化涨点设计

PartialNet Block 结合YOLO26的C3k2模块,进行二次创新。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 592

Agent智能体:核心概念与架构——建立系统认知

本文摘要介绍了Agent智能体的核心概念与架构设计。主要内容包括: Agent定义与分类:阐述了Agent作为能够感知环境、决策执行的智能实体,重点分析了现代基于大语言模型(LLM)的Agent架构。 核心模块组成:详细说明了Agent的五大核心模块(感知、规划、记忆、工具和执行)及其交互流程。 UML建模展示:通过类图和序列图,清晰呈现了Agent系统的静态结构和动态执行过程。 项目结构设计:给出了模块化的代码目录结构,为实际开发提供参考框架。

lza_csdn2019的博客 634

01.EntityBase

 using System;using System.Data;using System.Data.SqlClient;using System.Collections;namespace CheeryStudio.SystemFrame{ /// /// 實體基類 /// public class EntityBase

一品堂 410

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

baseentity java_BaseEntity类

import java.io.Serializable; import java.util.Date; import javax.persistence.Column; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.MappedSupercla...

weixin_42384743的博客 784

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

EF中多表公共字段,以及设置EntityBase使所有实体类继承自定义类

使用EF框架访问数据库时,如果某些表具有公共字段,例如在审核流程中,对于各类申请单资料的创建人、创建时间、修改人、修改时间,这些可能多表都需要的字段,如果在每个实体中进行赋值操作显然是类似和重复的,下面是一个统一在数据提交时进行赋值的例子(经简化,如果只是为记录时间并不用这么做),记录如下: 1、 创建一个公用接口IAudited,包含公用字段,申请单实体类继承这个接口。 2、 定义一个抽象类...

weixin_30672019的博客 661

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

2.8使用EntityBase

返回单个实例对象 ///<summary> ///按指定的名字返回城市对象 ///</summary> ///<paramname="cityName"></param> ///<returns></returns> [System.C...

weixin_33726318的博客 342

Java定义一个Entity基类

自定义一个基类,为实体类编写提供便利。 /** * Entity基类 * * @author LBF */ public class BaseEntity implements Serializable { private static final long serialVersionUID = 1L; /** 创建者 */ private String createBy; /** 创建时间 */ @JsonFormat(pattern = "yy.

彼岸尚有荣光在,应不断记录总结!!! 946

java baseentity_BaseEntity

@MappedSuperclasspublic class BaseEntity {@Id@GenericGenerator(name="idGenerator", strategy="uuid")@GeneratedValue(generator="idGenerator")// @Column(name = "id")private String objid;@JsonFormat(pa...

weixin_35843812的博客 948

java baseentity_java – JPA @Entity继承

我一直在研究JPA / Hibernate @Entity继承一段时间,似乎无法找到解决我想要实现的问题的任何东西.基本上我希望能够根据需要定义一个包含所有列和表映射的@Entity.然后,我希望能够使用在每个“子实体”的主体中定义的不同@Transient方法集在多个不同位置扩展@Entity.这是我想要实现的基本示例,但到目前为止没有成功:@Entity@Table(name = "mount...

weixin_35041325的博客 885

springdata jpa 定义一个BaseEntity

在开发中我们可以定义个BaseEntity,比如创建时间,修改时间等,不用每个实体都写上 定义BaseEntity,打上@MappedSuperclass注解,不用@Entity、@Table等注解 @MappedSuperclass public class BaseEntity { /** * 主键id */ @ApiModelPr...

你当像鸟飞往你的山~~ 6515

[分享] 一款极简单的 BaseEntity CRUD 方法

前言 尝试过 ado.net、dapper、ef,以及Repository仓储,甚至自己还写过生成器工具,以便做常规CRUD操作。 它们日常操作不方便之处: 每次使用前需要声明,再操作; 很多人一个实体类,对应一个操作类(或DAL、DbContext、Repository); BaseEntity 是一种极简单的 CodeFirst 开发方式,特别对单表或多表CRUD,利用继承节省了...

weixin_30882895的博客 423

Java JPA BaseEntity 类详解与示例

Java JPA BaseEntity 类详解与示例

Leon_Jinhai_Sun的博客 671

Mybatis中BaseEntity作用

新建各种对象的时候,一般来说,有几个属性是所有对象共有的,比如说id,is_del,is_enable这些,然后设置一个基础对象,以后新建所有对象的时候都继承它,就省的每次都要写这些共有的属性了。

代码蒋的博客 867

老司机带带你,教你学会Java中又骚又暴力的“反射”技术

在Java中有这么一个很骚的技术,几乎贯穿了所有主流的框架,在所有主流框架的底层中你都可以看见它的身影,这个技术就是。今天就来教教你如何理解和使用Java的反射。

一一哥 1796

java baseentity_如何在JPA的BaseEntity中实现equals()和hashcode()方法?

我有一个BaseEntity类,它是我的应用程序中所有JPA实体的超类.@MappedSuperclasspublic abstract class BaseEntity implements Serializable {private static final long serialVersionUID = -3307436748176180347L;@Id@GeneratedValue(str...

weixin_39774491的博客 453
上一篇: 程序员的量化交易之路(14)--Cointrader数据表(2)
下一篇: 程序员的量化交易之路(16)--Hibernate注解总结_转发的(4)
minimicall
博客等级 码龄18年 407粉丝 174原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值