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

@MappedSuperclass :持久化实体应该有主键

@MappedSuperclass是Java Persistence API (JPA) 中的一个注解,用于标识一个类为持久化实体的超类。持久化实体是指需要被存储到数据库中的对象。

该注解的作用是告诉JPA框架,被标注的类不需要创建对应的数据库表,而是作为其他实体类的父类,继承它的子类会继承其属性和方法,并将其映射到数据库表中。

@MappedSuperclass的主要特点和用途如下:

  1. 持久化实体应该有主键:通过在父类上使用@MappedSuperclass注解,可以将主键的定义放在父类中,子类继承父类后自动继承主键属性。
  2. 属性和方法的继承:子类可以继承父类的属性和方法,包括被@MappedSuperclass注解标注的属性和方法。
  3. 不生成对应的数据库表:被@MappedSuperclass注解标注的类不会生成对应的数据库表,只有继承它的子类才会生成表。
  4. 提高代码复用性:将公共的属性和方法抽取到父类中,可以提高代码的复用性和可维护性。

应用场景: @MappedSuperclass注解通常用于设计数据库模型时,将公共的属性和方法抽取到父类中,以便多个实体类共享这些属性和方法。例如,可以将创建时间、更新时间等公共字段抽取到父类中,子类继承父类后自动拥有这些字段。

推荐的腾讯云相关产品和产品介绍链接地址: 腾讯云提供了多种云计算相关产品,包括云数据库、云服务器、人工智能等。以下是一些相关产品的介绍链接地址:

  1. 腾讯云数据库:https://cloud.tencent.com/product/cdb
  2. 腾讯云云服务器:https://cloud.tencent.com/product/cvm
  3. 腾讯云人工智能:https://cloud.tencent.com/product/ai

请注意,以上链接仅供参考,具体的产品选择应根据实际需求和情况进行评估和决策。

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

相关·内容

Spring data 相关注解

---- @MappedSuperclass 类注解 在进行实体类的封装时,id、状态、时间等,这些实体类重复的公共属性可以声明一个超类统一进行设置,加上@MappedSuperclass注解,然后实体类继承即可...2、 @Lob注释表示该属性持久化为Blob或者Clob类型,具体取决于属性的类型。 ---- @GeneratedValue 用于标注主键的生成策略,通过strategy 属性指定。...来源:https://www.erlo.vip/share/9/5086.html ---- @Prepersist 查看@PrePersist注释,帮助您在持久之前自动填充实体属性。...当你在执行各种持久方法的时候,实体的状态会随之改变,状态的改变会引发不同的生命周期事件。...@javax.persistence.PrePersist:持久前。 @javax.persistence.PostPersist:持久后。

2.1K20

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

SpringDataJPA的基础概念和注解 一 JPA的介绍 JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系...,并将运行期的实体对象持久到数据库中。...uniqueConstraints 选项用于设置约束条件,通常不须设置 @MappedSuperclass 标注为@MappedSuperclass的类将不是一个完整的实体类,他将不会映射到数据库表,但是他的属性都将映射到其子类的数据库字段中...标注为@MappedSuperclass的类不能再标注@Entity或@Table注解,也无需实现序列接口 但是如果一个标注为@MappedSuperclass的类继承了另外一个实体类或者另外一个同样标注了...@MappedSuperclass的类的话,他将可以使用@AttributeOverride或@AttributeOverrides注解重定义其父类(无论是否是实体类)的属性映射到数据库表中的字段。

3.9K20
  • MySQL 8 新特性之自增主键持久

    自增主键没有持久是个比较早的bug,这点从其在官方bug网站的id号也可看出(https://bugs.MySQL.com/bug.php?id=199)。...这就是自增主键没有持久的bug。究其原因,在于自增主键的分配,是由InnoDB数据字典内部一个计数器来决定的,而该计数器只在内存中维护,并不会持久到磁盘中。...SELECT MAX(ai_col) FROM table_name FOR UPDATE; MySQL 8.0的解决思路 将自增主键的计数器持久到redo log中。...id=6204 因自增主键没有持久而出现问题的常见场景: 1. 业务将自增主键作为业务主键,同时,业务上又要求主键不能重复。 2. 数据会被归档。在归档的过程中有可能会产生主键冲突。...所以,强烈建议不要使用自增主键作为业务主键。刨除这两个场景,其实,自增主键没有持久的问题并不是很大,远没有想象中的”臭名昭著“。

    62110

    工作流中的数据持久详解!Activiti框架中JPA的使用分析

    @MappedSuperclass也要能够被使用 实体应该有一个使用@Id注解的主键,不支持复合主键@EmbeddedId 和 @IdClass: Id字段或者属性能够使用JPA规范支持的任意类型:...,这样可以通过配置引用或者提供一个持久单元名称 作为变量的JPA实体将会被自动检测并进行相应的处理 使用jpaPersistenceUnitName配置: <bean id="processEngineConfiguration...JPA用法 简单示例 首先,需要创建一个基于META-INF/persistence.xml的EntityManagerFactory作为<em>持久</em><em>化</em>单元:包含<em>持久</em><em>化</em>单元中所有的类和一些供应商特定的配置 使用一个简单的<em>实体</em>作为测试...,其中包含有一个id和String类型的value属性,也将会被<em>持久</em><em>化</em> 在测试之前,创建一个<em>实体</em>并且保存: @Entity(name = "JPA_ENTITY_FIELD") public class...其他的变量,将会被存储在流程引擎的持久数据库中.下一次获取该变量的时候,将会根据该类和存储Id从EntityManager中加载: Map variables = new

    1.8K20

    SpringBoot注解最全详解(整合超详细版本)

    @Id:表示该属性为主键。...@Basic(fetch=FetchType.LAZY):标记可以指定实体属性的加载方式 @JsonIgnore:作用是json序列化时将Java bean中的一些属性忽略掉,序列和反序列都受影响。...@MappedSuperclass 标识的类不能再有@Entity或@Table注解 @Column: a.当实体的属性与其映射的数据库表的列不同名时需要使用@Column标注说明,该属性通常置于实体的属性声明语句之前...当我们需要重载多个构造器的时候,只能自己手写了 @NonNull:注解在属性上,如果注解了,就必须不能为Null @val:注解在属性上,如果注解了,就是设置为final类型,可查看源码的注释知道 当你在执行各种持久方法的时候...@javax.persistence.PrePersist:持久前。 @javax.persistence.PostPersist:持久后。

    4.8K10

    SpringBoot最全注解大全

    @Id:表示该属性为主键。...@Basic(fetch=FetchType.LAZY):标记可以指定实体属性的加载方式 @JsonIgnore:作用是json序列化时将Java bean中的一些属性忽略掉,序列和反序列都受影响。...@MappedSuperclass 标识的类不能再有@Entity或@Table注解 @Column: a.当实体的属性与其映射的数据库表的列不同名时需要使用@Column标注说明,该属性通常置于实体的属性声明语句之前...当我们需要重载多个构造器的时候,只能自己手写了 @NonNull:注解在属性上,如果注解了,就必须不能为Null @val:注解在属性上,如果注解了,就是设置为final类型,可查看源码的注释知道 当你在执行各种持久方法的时候...@javax.persistence.PrePersist:持久前。@javax.persistence.PostPersist:持久后。

    5.5K30

    SpringBoot注解最全详解(整合超详细版本)

    一般用于jpa这两个注解一般一块使用,但是如果表名和实体类名相同的话,@Table可以省略 @MappedSuperClass:用在确定是父类的entity上。父类的属性子类可以继承。...@Id:表示该属性为主键。...@Basic(fetch=FetchType.LAZY):标记可以指定实体属性的加载方式 @JsonIgnore:作用是json序列化时将Java bean中的一些属性忽略掉,序列和反序列都受影响。...当我们需要重载多个构造器的时候,只能自己手写了 @NonNull:注解在属性上,如果注解了,就必须不能为Null @val:注解在属性上,如果注解了,就是设置为final类型,可查看源码的注释知道 当你在执行各种持久方法的时候...@javax.persistence.PrePersist:持久前。 @javax.persistence.PostPersist:持久后。

    73510

    SpringBoot 注解最全详解 (整合超详细版本)

    @Id:表示该属性为主键。...@Basic(fetch=FetchType.LAZY):标记可以指定实体属性的加载方式 @JsonIgnore:作用是 json 序列化时将 Java bean 中的一些属性忽略掉, 序列和反序列都受影响...@MappedSuperclass 标识的类表示其不能映射到数据库表,因为其不是一个完整的实体类,但是它所拥有的属性能够映射在其子类对用的数据库表中 3....,只能自己手写了 - @NonNull:注解在属性上,如果注解了,就必须不能为 Null - @val: 注解在属性上,如果注解了,就是设置为 final 类型,可查看源码的注释知道 当你在执行各种持久方法的时候...@javax.persistence.PrePersist:持久前。 @javax.persistence.PostPersist:持久后。

    92040

    SpringBoot注解最全详解

    @Id:表示该属性为主键。...@Basic(fetch=FetchType.LAZY):标记可以指定实体属性的加载方式 @JsonIgnore:作用是json序列化时将Java bean中的一些属性忽略掉,序列和反序列都受影响。...@MappedSuperclass 标识的类不能再有@Entity或@Table注解 @Column: 1.当实体的属性与其映射的数据库表的列不同名时需要使用@Column标注说明,该属性通常置于实体的属性声明语句之前...19 20 @NonNull:注解在属性上,如果注解了,就必须不能为Null 21 22 @val:注解在属性上,如果注解了,就是设置为final类型,可查看源码的注释知道 当你在执行各种持久方法的时候...@javax.persistence.PrePersist:持久前。 @javax.persistence.PostPersist:持久后。

    1.2K20

    后端必备:常用注解总结!

    @Id:表示该属性为主键。...@Basic(fetch=FetchType.LAZY):标记可以指定实体属性的加载方式 @JsonIgnore:作用是json序列化时将Java bean中的一些属性忽略掉,序列和反序列都受影响。...,因为其不是一个完整的实体类,但是它所拥有的属性能够映射在其子类对用的数据库表中 @MappedSuperclass 标识的类不能再有@Entity或@Table注解 @Column: 1.当实体的属性与其映射的数据库表的列不同名时需要使用...当我们需要重载多个构造器的时候,只能自己手写了 @NonNull:注解在属性上,如果注解了,就必须不能为Null @val:注解在属性上,如果注解了,就是设置为final类型,可查看源码的注释知道 当你在执行各种持久方法的时候...@javax.persistence.PrePersist:持久前。 @javax.persistence.PostPersist:持久后。

    82740

    SpringBoot注解最全详解

    @Id:表示该属性为主键。...@Basic(fetch=FetchType.LAZY):标记可以指定实体属性的加载方式 @JsonIgnore:作用是json序列化时将Java bean中的一些属性忽略掉,序列和反序列都受影响。...@MappedSuperclass 标识的类不能再有@Entity或@Table注解 @Column: 1.当实体的属性与其映射的数据库表的列不同名时需要使用@Column标注说明,该属性通常置于实体的属性声明语句之前...20 @NonNull:注解在属性上,如果注解了,就必须不能为Null 21 22 @val:注解在属性上,如果注解了,就是设置为final类型,可查看源码的注释知道 当你在执行各种持久方法的时候...@javax.persistence.PrePersist:持久前。 @javax.persistence.PostPersist:持久后。

    92620

    JPA实体类中的注解

    EmumType.STRING) 注解指定枚举类型   其中,EmumTypes表示保存到数据库中是索引还是字符串 @Lob声明属性对应的数据库字段为大文本类型,可以存放大的数据(文本和字节) @Transient不成为持久字段及不跟数据库中的字段形成映射...@Basic(fetch=FetchType.LAZY)   是否把数据装载到内存中延迟初始,第一次访问的时候在加载数据,一般用在大数据存放 @Embeddable指定联合组键 和@EmbeddedId...@Id @Id设置对象表示符,标识的实体类的属性映射对应表中的主键 @GeneratedValue 设置标识符的生成策略,常与@Id一起使用  参数:strategy指定具体的生成策略  方式一:@...例如,实体Order有一个user属性来关联实体User,则Order的user属性为一个外键,  其默认的名称为实体User的名称+下划线+实体User的主键名称  @JoinTable(name =...  inverseJoinColumns:对方的主键 @MappedSuperclass 可选  @MappedSuperclass可以将超类的JPA注解传递给子类,使子类能够继承超类的JPA注解 @

    3.9K70

    spring和springboot常用注解_Java常用注解

    2、@MappedSuperClass 基于代码复用和模型分离的思想,在项目开发中使用jpa的@MappedSuperClass注解,将实体类的多个属性分别封装到不同的非实体类中。...例如,数据库表中都需要id来表示编号,id是这些映射实体类的通用属性,交给jpa统一生产主键id编号,那么使用一个父类来封装这些通用属性,并用@MappedSuperClass标识。...注意: 标注为@MappedSuperClass的类将不是一个完整的实体类,它将不会映射到数据库表,但是它的属性都映射到其子类的数据库字段中。...标注@MappedSuperClass的类不能再标注@#Entity或@Table注解,也无需实现序列接口。...5、@Id 表示该属性为主键。 6、@Transient 表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性。

    74420

    SpringBoot2.x系列教程(八)SpringBoot常用注解汇总

    @Repository:持久层组件,用于标注数据访问组件,即DAO组件。 @Bean:用@Bean标注方法等价于XML中配置的bean。 @Value:将配置文件中key对应的值赋值给它标注的属性。...@Controller:将被修饰的类被实例并注入Spring IOC容器中。语义的作用,即代表该类是充当Controller的作用。...@MappedSuperClass:注解使用在父类上面,标识的类表示其不能映射到数据库表,被标识的类不能再使用@Entity或@Table注解。...@Column:用来标识实体类中属性与数据表中字段的对应关系,如果字段名与列名相同,则可以省略。 @Id:表示该属性为主键。 @GeneratedValue:为实体生成唯一标识的主键提供生成策略。...@JsonIgnore:作用是json序列化时将Java bean中的一些属性忽略掉,序列和反序列都受影响。 @JoinColumn:用来指定与所操作实体实体集合相关联的数据库表中的列字段。

    1.4K10

    springboot实战之ORM整合(JPA篇)

    前言 1、什么是ORM 对象关系映射(Object Relational Mapping,简称ORM)是通过使用描述对象和数据库之间映射的元数据,将面向对象语言程序中的对象自动持久到关系数据库中。...,并将运行期的实体对象持久到数据库中。...这是持久操作中很重要的一个方面,通过面向对象而非面向数据库的查询语言查询数据,避免程序的SQL语句紧密耦合。 (3)ORM(object/relational metadata)元数据的映射。...JPA支持XML和JDK5.0注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持久到数据库表中。...@GeneratedValue 指定如何标识属性可以被初始,例如自动、手动、或从序列表中获得的值 @Column 指定持久属性栏属性。

    5.9K20

    Spring Data JPA 时间注解:@CreatedDate 和 @LastModifiedDate

    选择 Spring Data JPA 框架开发时,常用在实体和字段上的注解有@Entity、@Id、@Column等。在表设计规范中,通常建议保留的有两个字段,一个是更新时间,一个是创建时间。...在实体类上加上注解 @EntityListeners(AuditingEntityListener.class),在相应的字段上添加对应的时间注解 @LastModifiedDate 和 @CreatedDate...Long @Entity @EntityListeners(AuditingEntityListener.class) public class User { /** * 自增主键...可以参考下面的配置实现: @Entity @EntityListeners(AuditingEntityListener.class) public class User { /** * 自增主键...Hibernate 也提供了类似上述时间注解的功能实现,这种方法只需要一步配置,更改为注解 @UpdateTimestamp 和 @CreationTimestamp 即可(参考如下): @Data @MappedSuperclass

    4.3K10
    领券