首页 > 其他分享 >@MappedSuperclass用法,主要用于JPA基类(超类)的定义

@MappedSuperclass用法,主要用于JPA基类(超类)的定义

时间:2024-02-01 17:06:32浏览次数:27  
标签:实体类 映射 JPA MappedSuperclass BaseEntity 超类

@MappedSuperclass 是 Java Persistence API (JPA) 中的一个注解,用于指示某个类是一个映射的超类(Mapped Superclass)。映射的超类类似于普通的 Java 类,但它不会被映射到数据库表,而是作为其他实体类的基类,用于共享字段和方法。

当你在 JPA 中定义一个实体类的时候,可以使用 @Entity 注解来标识它,这将使得该类会被映射到数据库中的表。但有时候,你可能会想要定义一些属性和方法,这些属性和方法可以被多个实体类共享,而不需要在每个实体类中都重复定义。

这时候,你可以创建一个标有 @MappedSuperclass 注解的抽象类,将这些共享的属性和方法放在其中。这些属性和方法将不会被映射到数据库表,但可以被继承自这个超类的实体类使用。

以下是一个简单的示例,展示了如何使用 @MappedSuperclass 注解:

import javax.persistence.*;

@MappedSuperclass
public abstract class BaseEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    protected Long id;

    @Column(name = "created_at")
    protected Timestamp createdAt;

    // Getter and Setter methods
}

@Entity
@Table(name = "employees")
public class Employee extends BaseEntity {
    @Column(name = "employee_name")
    private String employeeName;

    // Getter and Setter methods
}

在这个示例中,BaseEntity 是一个映射的超类,它有一个自动生成的 id 字段和一个 createdAt 字段。Employee 类继承自 BaseEntity,并且额外定义了一个 employeeName 字段。

当你使用 JPA 持久化上述代码中的 Employee 实体类时,id 和 createdAt 字段将会被映射到数据库表,而 BaseEntity 类本身并不会映射到表。

总之,@MappedSuperclass 注解允许你在 JPA 中创建一个共享属性和方法的基类,而不需要将这些属性和方法映射到数据库表中。


标签:实体类,映射,JPA,MappedSuperclass,BaseEntity,超类
From: https://blog.51cto.com/lenglingx/9533701

相关文章

  • 使用spring-jpa和 hibernate实现逻辑删除
    一、使用spring-jpa和hibernate的@SQLDelete和@Where注解实现逻辑删除逻辑删除定义逻辑删除是指在删除数据库的某条记录时,并不是真正的将该条记录删除,而是通过某个字段来标识其状态为“删除”,在接下来的查询等操作时,根据此字段来过滤调被删除的记录。使用Hibernate进行逻辑删除......
  • 使用Spring Data JPA实现审计功能,记录创建人、创建时间、最后修改时间和最后修改人
    目录前言近日心血来潮想做一个开源项目,目标是做一款可以适配多端、功能完备的模板工程,包含后台管理系统和前台系统,开发者基于此项目进行裁剪和扩展来完成自己的功能开发。本项目为前后端分离开发,后端基于Java21和SpringBoot3开发,后端使用SpringSecurity、JWT、SpringDataJP......
  • 超类
    java.lang.xxx会自动导入只要一个包是属于java.lang下的包,这个包是jvm虚拟机自动帮我们导入的一个类会默认去继承Object类classPerson{}上面这个其实会默认去继承Object类;也就是是等价与下面的代码classPersonextendsObject{}超类根据我们刚刚所讲的;一......
  • Spring Boot中使用JPA进行数据库操作
    在Java后端开发中,数据库操作是一个非常重要的环节。SpringBoot作为当前非常流行的轻量级Java开发框架,提供了很多便捷的工具和功能,使得数据库操作变得更加简单快捷。在SpringBoot中,我们可以使用JPA(JavaPersistenceAPI)来进行数据库操作。JPA是一种将对象持久化到数据库的方法,它遵......
  • SpringDataJpa框架使用【超详细!】
    SpringDataJpa框架使用【超详细!】SpringDataJpa框架使用文档一、什么是Jpa?jpa的全称是JavaPersistenceAPI,中文的字面意思就是java的持久层API,jpa就是定义了一系列标准,让实体类和数据库中的表建立一个对应的关系,当我们在使用java操作实体类的时候能达到操作数......
  • 记一次工作中使用spring jpa遇见的坑。
    报错:RRORoro.hiberate.enoineidcsvisalexceptionhelnerConnectionisread-only,Cueriesleadingtodatamodificationarenotallowedorg.springframework.orm.jpa.JpaSystemException:couldnotexecutestatement;nestedexceptionisorg.hibernate.exception.Gen......
  • Jpa+mybatis混合使用时,jsqlparser一直报错
    net.sf.jsqlparser.statement.insert.Insertcannotbecasttonet.sf.jsqlparser.statement.select.Select解决<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactI......
  • JPA中@ElementCollection使用
    转载请注明出处:在JPA中,@ElementCollection注解主要用于映射集合属性,例如List、Set或数组等集合属性,以及Map结构的集合属性,每个属性值都有对应的key映射。这个注解可以用于实体类的字段,表示该字段是一个元素集合,每个元素都会被映射到数据库中的一行。例如,假设我们有一个User......
  • SpringBoot JPA实践之EntityManage查询返回自定义DTO entityManager.createNativeQuer
    SpringBootJPA实践之EntityManage查询返回自定义DTOentityManager.createNativeQuery(sql)  在很多时候我更喜欢随意组合查询出来返回一个DTO对象的实现,JPA提供的多数查询均以返回Entity居多,它提供的EntityManager对象可以实现将SQL语句查询的结果转换为自定义DTO对象(这与......
  • jpackage与jlink等编译打包工具
    jpackage与jlink等编译打包工具都位于jdk/bin目录下,可以通过命令终端直接执行也可通过idea直接调用。如果配置了环境变量就可以通过终端直接执行.1、查看版本号:PSC:\Users\Administrator\Desktop>jpackage--version  21.0.1PSC:\Users\Administrator\Deskt......