首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当使用TABLE_PER_CLASS继承策略在JPA schema上存储子实体时,也可以写入父实体的策略

是通过使用JPA的@Inheritance注解来实现的。

@Inheritance注解用于指定继承策略,其中有三个选项可供选择:SINGLE_TABLE、TABLE_PER_CLASS和JOINED。在这里,我们关注的是TABLE_PER_CLASS继承策略。

TABLE_PER_CLASS继承策略是指每个具体子类都会在数据库中创建一个单独的表来存储其属性。父类和子类之间没有共享的表,每个表都包含了子类的属性以及继承自父类的属性。

使用TABLE_PER_CLASS继承策略时,可以通过在父类和子类的实体类上分别使用@Entity注解来实现。父类的实体类上需要使用@Inheritance注解,并将strategy属性设置为InheritanceType.TABLE_PER_CLASS。

下面是一个示例代码:

代码语言:txt
复制
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class ParentEntity {
    // 父类属性
}

@Entity
public class ChildEntity extends ParentEntity {
    // 子类属性
}

使用TABLE_PER_CLASS继承策略的优势是可以更好地组织和管理继承关系的数据。每个子类都有自己的表,可以独立地进行增删改查操作,不会影响其他子类的数据。这种策略也更符合面向对象的设计原则。

TABLE_PER_CLASS继承策略适用于具有多层次继承关系的情况,每个子类都有自己独特的属性和行为。它可以提供更灵活的数据模型,并且可以根据具体需求进行查询和操作。

腾讯云提供的相关产品是TencentDB for MySQL,它是一种高性能、可扩展的云数据库解决方案,适用于各种规模的应用程序和业务场景。您可以通过以下链接了解更多关于TencentDB for MySQL的信息:TencentDB for MySQL

请注意,以上答案仅供参考,具体的实现方式和推荐产品可能会根据实际需求和环境而有所不同。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Spring·JPA

这个类方法层面使用注解,即使它类有可能在字段层面使用了注解。...这种方法减少了存储空间,但从另一方面来看它引入了连接查询,这会显著降低查询速度。 TABLE_PER_CLASS: 和 JOINED 策略类似,这个策略为每种实体类型创建单独表。...但与 JOINED 策略相反是,这些表包含了所有与当前实体相关信息。因此加载这些实体不需要引入连接查询,但它带来新问题是:不知道具体子类,需要使用另外 SQL 查询来确定它信息。...这样就可以简单对象定义 OneToMany 关系,而不必定义另外表中使用“普通” Embedded 关系。...这个策略使用是一个单独表,系统中有大量序列值请求,它很容易成为性能瓶颈,因此 JPA 支持预定义大小,以使不用频繁请求数据库。

3.3K30

springBoot注解与分析

把配置好Bean拿来用,完成属性、方法组装,它可以对类成员变量、方法及构造函数进行标注,完成自动装配工作。加上(required=false),就算找不到bean不报错。...@Qualifier:有多个同一类型Bean可以用@Qualifier(“name”)来指定。与@Autowired配合使用。...一般用于jpa这两个注解一般一块使用,但是如果表名和实体类名相同的话,@Table可以省略 @MappedSuperClass:用在确定是entity属性子类可以继承。...@PostUpdate事件实体状态同步到数据库之后触发,同步事务提交发生。...容器中一定拥有某个类Bean 可以需要自动注入该类 Bean 地方可以使用 @Autowired(required = false), 这等于告诉Spring:找不到匹配Bean不抛出

1.1K10
  • SpringDataJPA笔记(1)-基础概念和注解

    JPA注解 查询相关注解 @NoRepositoryBean 添加了该注解 repository 接口不会在运行时被创建实例,只会作为其他接口接口而被使用 @Modifying (1)可以通过自定义...如声明一个实体类 Customer,它将映射到数据库中 customer 表 @Table 实体类与其映射数据库表名不同名需要使用 @Table 标注说明,该标注与 @Entity 标注并列使用...,框架借由表模拟序列产生主键,使用策略可以使应用更易于数据库移植。...生成器可以类、方法或者属性定义 生成器是为多个实体类提供连续ID值表,每一行为一个类提供ID值,ID值通常是整数 元数据属性说明: name:生成器唯一名字,可以被Id元数据使用。...optional:表示该属性是否允许为null, 默认为true @Column 实体属性与其映射数据库表列不同名需要使用@Column 标注说明,该属性通常置于实体属性声明语句之前,还可与

    3.9K20

    SpringDataJPA笔记(14)-Inheritance注解详解之SINGLE_TABLE

    SpringDataJPA笔记(14)-Inheritance注解详解之SINGLE_TABLE JPA使用映射注解Inheritance,有三种策略属性 SINGLE_TABLE – 将所有类和子类集合在一张表...TABLE_PER_CLASS – 每个子类会生成一张单独表,可以查询所有子类表数据,参考上一篇笔记Union查询 JOINED – 每个类分别生成一张单独表,但是每张表只有自己属性,没有属性...查看表结构,发现有三张表字段同时存在 这里还有一个dtype字段,这个是默认区别的字段名,还可以用@DiscriminatorColumn加@DiscriminatorValue注解来指定 ?...swagger页面分别通过三个接口创建三条数据,查看表数据 ?...可以看到通过类查询可以查询所有数据,而子类只能分别查询出子类数据

    2.3K20

    Spring Data(一)概念和仓库定义

    方法底层数据存储都有对应查询,使用SpringData,声明这些查询分为4步: 1、声明接口继承Repository或者Repository子类,并标注实体类型和ID类型 interface...要不然,如果你不想继承Spring Data接口,你可以使用@RepositoryDefinition注解你自己仓库接口。...它可以从名字直接导出查询,或者使用手工定义查询。可用选项取决于实际存储。可是,它有一个策略决定哪一个查询被生成。 查询查找策略 下面的策略是可用仓库解决查询基础。...你可以命名空间配置策略,通过xml文件中query-lookup-strategy参数或者Enable*注解中queryLookupStrategy参数。一些策略特殊存储中不被支持。...它首先查找声明查询,如果不能找到,它将生成一个基于命名查询。这是默认查询策略。它可以通过方法名字快速生成查询,可以通过查询声明生成查询。 ​

    2.5K10

    Spring认证中国教育管理中心-Spring Data Couchbase教程三

    文档发生变异,CAS 值会发生变化。CAS 对客户端是不透明,您唯一需要知道是它会随着内容或元信息变化而变化。 在其他数据存储中,可以通过带有递增计数器任意版本字段来实现类似的行为。...如果您遇到此类异常,则进一步方法取决于您希望应用程序方面实现目标。您应该重试完整加载-更新-写入周期,或者将错误传播到上层以进行正确处理。...2.5.验证 该库支持 JSR 303 验证,它直接基于实体注释。当然,您可以服务层中添加各种验证,但这样可以很好地与您实际实体耦合。 要使其工作,您需要包含两个额外依赖项。...持久化实体,框架将自动在这些字段注入正确值。...3.1配置 要自动生成键应使用 注释@GeneratedValue。默认策略是USE_ATTRIBUTES. 密钥前缀和后缀可以作为实体本身一部分提供,这些值不会持久化,它们仅用于密钥生成。

    1.8K30

    JPA主键生成策略介绍

    它提供主键值生成策略规范,可以与 Id 注解一起应用于实体或映射超类主键属性或字段;它只支持简单主键,派生主键不支持使用 。...:【可选】将在表放置其他唯一约束,仅表生成有效使用它们;除了主键约束之外,还应用了这些约束;默认为无其他约束。...表生成器 可以实体类或主键字段/属性指定。生成器名称作用范围是持久性单元全局(跨所有生成器类型)。...UniqueConstraint[] uniqueConstraints() :可选项,要放置唯一约束条件。仅在表生成器生效使用。这些约束条件适用于主键约束之外。...序列生成器 可以实体类或主键字段或属性指定。生成器名称范围是持久单元全局(跨所有生成器类型)。

    16411

    Spring Data JPA 参考文档四

    没有客户端 bean 需要存储实例,延迟化才有效,因为这将需要存储库 bean 初始化。...这意味着,如果客户端 bean 只是将实例存储一个字段中并且初始化期间没有使用存储库,那么存储库将不会被实例化。存储库实例将在第一次与存储库交互进行初始化和验证。...实体状态检测策略 Spring Data JPA 提供以下策略来检测实体是否为新实体: Version-Property 和 Id-Property 检查(默认):默认情况下,Spring Data JPA...声明一个使用 JPA 实体回调方法,以便save(…)持久性提供程序调用存储库或创建实例后切换标志以指示现有实体。 5.1.3....使用命名参数 默认情况下,Spring Data JPA 使用基于位置参数绑定,如前面所有示例中所述。这使得重构参数位置查询方法有点容易出错。

    3.5K30

    Jpa使用详解

    简单方便 JPA主要目标之一就是提供更加简单编程模型:JPA框架下创建实体和创建Java 类一样简单,没有任何约束和限制,只需要使用 javax.persistence.Entity进行注释,...JPA框架和接口都非常简单,没有太多特别的规则和设计模式要求,开发者可以很容易掌握。...高级特性 JPA 中能够支持面向对象高级特性,如类之间继承、多态和类之间复杂关系,这样支持能够让开发者最大限度使用面向对象模型设计企业应用,而不需要自行处理这些特性关系数据库持久化。...String schema() default ""; //属性值表示持久化表中,该主键生成策略所对应键值名称。...对象不会有线程安全问题),并且EntityManagerFactory 创建极其浪费资源,所以使用JPA编程,我们可以对EntityManagerFactory 创建进行优化,只需要做到一个工程只存在一个

    3.2K20

    如何在 Spring Boot 中 读写数据

    写在前面:2020年面试必备Java后端进阶面试题总结了一份复习指南Github,内容详细,图文并茂,有需要学习朋友可以Star一下!...如何在 Spring Boot 中 读写数据 cascade 属性用于指定级联策略策略 | 说明 --- | --- CascadeType.PERSIST | 级联持久化;保存实体会同时保存子实体...CascadeType.MERGE | 级联合并;修改了子实体,保存实体会同时保存子实体(常用)。 CascadeType.REMOVE | 级联删除;删除实体,会级联删除关联实体。...CascadeType.REFRESH | 级联刷新;获取实体同时会重新获取最新实体。...所以,如果站在部门角度来看 分析用户与部门之间关系,一个员工只能属于一个部门,但是一个部门可以包含有多个员工,如果我们站在部门角度来看,部门与员工之间就是一对多关系,部门实体类 Department

    15.9K10

    Spring boot注解讲解

    @ResponseBody:表示该方法返回结果直接写入HTTP response body中,一般异步获取数据使用,用于构建RESTfulapi。...把配置好Bean拿来用,完成属性、方法组装,它可以对类成员变量、方法及构造函数进行标注,完成自动装配工作。加上(required=false),就算找不到bean不报错。...@Qualifier:有多个同一类型Bean可以用@Qualifier(“name”)来指定。与@Autowired配合使用。...JPA注解 @Entity:@Table(name=”“):表明这是一个实体类。...一般用于jpa这两个注解一般一块使用,但是如果表名和实体类名相同的话,@Table可以省略 @MappedSuperClass:用在确定是entity属性子类可以继承

    12610

    数据库性能最佳实践 – JPA缓存

    设置会对性能产生较大影响。 仅仅有当使用实体主键进行訪问JPA缓存才会工作。这意味着。...所以即使JPA实现支持查询缓存,查询返回实体不会被存储二级缓存中。因此也就不能被诸如find()等方法利用了。...所以最后一个測试用例,开启了查询缓存后,兴许运行时间大幅缩短到1.1s。同一候没有发生SQL调用。这是一个使用查询缓存典型样例。...所以,使用无查询策略是。首次运行时间一般会比較长,这个过程能够被看成是一个“热身”过程。“热身”结束之后。程序性能会提高一个档次。...所以,希望缓存一个实体对象关联一组实体对象,仅仅须要调用对应getter方法就可以。甚至不须要对该集合进行遍历。

    1.8K20

    Spring Boot2集成Elasticsearch、PostgreSQL遇到问题

    JPA实体继承映射数据表   多个实体间有多个属性相同时,可以考虑抽取抽象实体方式复用属性定义,并在抽象使用@MappedSuperclass注解(注意此类不能再标注@Entity或@Table...中还有不同遗传策略来解决多实体继承映射关系,同样可以实现上述一样效果(@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)): ?...如果当前实体需要使用多个@JsonProperty才能定义这种关系,可以考虑使用这种更快捷方式 @Data @Document(indexName = "school", type = "primary_school...PropertyNamingStrategy   从上图可以看到jackson包中已经定义好有五种不同映射策略,如果都不满足实际需求的话还可以自行扩展,只需要继承PropertyNamingStrategyBase...JPA实体继承实体映射策略 SpringData ES 关于字段名和索引中列名字不一致导致查询问题

    1.6K40

    SpringDataJPA 系列之 JPA 简介

    从数据库 SELECT ,自动把字段值塞进 JavaBean 对应属性里,当做 INSERT 或 UPDATE ,自动把 JavaBean 属性值绑定到 SQL 语句中。...JPA 由 EJB 3.0 软件专家组开发,作为 JSR-220 实现一部分。但它又不限于 EJB 3.0,你可以 Web 应用、甚至桌面应用中使用。...进行注释,JPA 框架和接口都非常简单,没有太多特别的规则和设计模式要求,开发者可以很容易掌握。...☞ 高级特性   JPA 中能够支持面向对象高级特性,如类之间继承、多态和类之间复杂关系,这样支持能够让开发者最大限度使用面向对象模型设计企业应用,而不需要自行处理这些特性关系数据库持久化...随着 Spring Boot 和 Spring Cloud 市场上流行,Spring Data JPA 逐渐进入大家视野,它们组成有机整体,使用起来比较方便,加快了开发效率,使开发者不需要关心和配置更多东西

    4.3K20

    Spring Data JPA 参考文档 一

    或者,如果您不想扩展 Spring Data 接口,可以使用@RepositoryDefinition. 扩展CrudRepository公开了一套完整方法来操作您实体。...有时,应用程序需要使用多个 Spring Data 模块。在这种情况下,存储库定义必须区分持久性技术。当在类路径检测到多个存储库工厂,Spring Data 进入严格存储库配置模式。...下一节描述了可用选项。 4.4.1. 查询查找策略 以下策略可用于存储库基础结构来解析查询。通过 XML 配置,您可以通过query-lookup-strategy属性命名空间配置策略。...非常基础层面上,您可以定义实体属性条件并将它们与And和连接起来Or。 解析方法实际结果取决于您为其创建查询持久性存储。...由于这可能很昂贵(取决于使用商店),您可以改为返回Slice. ASlice只知道下一个Slice是否可用,这在遍历更大结果集可能就足够了。 排序选项通过Pageable实例处理。

    2.1K10

    jpaspringdata(1)jpa

    1.什么是jpa 假如学过hibernatejpa会发现非常简单,因为是同一个人写jpa是第三方orm框架一种规范,hibernate作为jpa 一个子集 2.需要导入jar 这里使用是...-- 实际配置是 javax.persistence.spi.PersistenceProvider 接口实现类, 若 JPA 项目中只有一个 JPA 实现产品, 则可以不配置该节点...ID自增长方式来自增主键段,Oracle 不支持这种方式;AUTO: JPA自动选择合适策略, 是默认选项(因为是默认选项所以可以不写);SEQUENCE:通过序列产生主键,通过 @SequenceGenerator...注解指定序列名,MySql 不支持这种方式,TABLE:通过表产生主键,框架借由表模拟序列产生主键,使用策略可以使应用更易于数据库移植。...方法,但是不需要与数据库相关联,   那么get方法使用@Transient,jap处理注解类方法注解,其余都在get方法,Column还具有以下一些属性 ,unique(唯一) 、

    2K20

    Java一分钟之-JPA注解:@Entity, @Table, @Id等

    @Entity - 标识实体类@Entity注解用于标记一个Java类为JPA实体,这意味着该类实例可以被转换成数据库中记录。实体类通常对应数据库中一张表。...易错点:忘记添加此注解或将其应用到非实体。避免策略:确保所有需要映射到数据库表类都带有@Entity注解,并且检查类是否符合实体标准,如具有无参构造器。...@Table - 映射表名和属性虽然JPA默认将实体类名作为数据库表名,但@Table注解允许我们自定义表名、指定表schema等。常见问题:忽略自定义表名需求,导致数据库表名与实体类名不一致。...避免策略实体类名不符合数据库命名规范或有特殊需求使用@Table注解明确指定表名。...@Id - 标识主键@Id注解用于标记实体类中哪个属性作为数据库表主键。每个实体必须有一个主键。易错点:未正确设置主键,或者实体类中使用了复合主键但未正确配置。

    1.4K10

    SpringBoot中必须掌握45个注解

    泛指组件,组件不好归类时候,我们可以使用这个注解进行标注; @ResponseBody: 表示该方法返回结果直接写入HTTP response body中,一般异步获取数据使用使用@RequestMapping...把配置好Bean拿来用,完成属性、方法组装,它可以对类成员变量、方法及构造函数进行标注,完成自动装配工作; 加上(required=false),就算找不到bean不报错; @Qualifier...: 有多个同一类型Bean可以用@Qualifier(“name”)来指定。...一般用于jpa ,这两个注解一般一块使用,但是如果表名和实体类名相同的话,@Table可以省略; @MappedSuperClass: 用在确定是entity。...属性子类可以继承; @NoRepositoryBean: 一般用作repository,有这个注解,spring不会去实例化该repository; @Column: 如果字段名与列名相同,

    1.3K20

    JPA 详解

    实现这个规范后开发者可以使用相同代码可以在任意数据库中执行CRUD操作,实现框架不仅仅是处理和数据库交换代码(JDBC),同时会将数据库中数据和Java对象映射起来,无需手动进行转换。...这两种方法几乎没什么区别,唯一区别在于如果注解修饰字段子类无法重写其注解。 另一个需要注意是需要在一个实体层次使用一种注解方式。...可以JPA整个项目混用注解字段或者方法,但是一个实体和它子类中需要确保使用是同一种注解方式。...,可以使用@Inheritance选择不同存储策略,对于这种一共有三种选择: SINGLE_TABLE: 这个策略就是把所有的字段映射到一张表中 JOINERD: 对每个实体创建一张表。...每个表只包含其映射对象信息,加载一个实体时候,通过join方式获取所有的信息,虽然降低了存储空间,但是 TABLE_PER_CLASS: 所有的表中都会包含全部信息。

    4.8K20
    领券