用JPA继承抽象类(+Hibernate)

2024-03-30

您将如何在以下示例代码中配置注释?我想只坚持使用 JPA 注释并避免 Hibernate 特定的依赖项。下面的代码正确吗?

@Entity
public class RefExample extends RefData {

}

(这些类将有多个版本,RefSomeOtherExample 等,每个类一个数据库表。有些可能会添加其他字段(列),但大多数只会使用从“RefData”基类继承的基本字段。)

基类:

@Entity
public abstract class RefData {

    private long id;
    private String code;
    private String desc;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(unique = true, nullable = false)
    public long getId() {

        return id;
    }

    public void setId(long id) {

        this.id = id;
    }

    @Column(unique = true, nullable = false, length=8)
    public String getCode() {

        return code;
    }

    public void setCode(String code) {

        this.code = code;
    }

    @Column(unique = true, nullable = false, length=80)
    public String getDesc() {

        return desc;
    }

    public void setDesc(String desc) {

        this.desc = desc;
    }
}

最终我想使用 Hibernate 的 SchemaExport 类生成模式创建脚本。在上面的情况下,这两个类应该只会创建一个名为“RefExample”的表,其中包含“RefData”中的三列。这行得通吗?


来自 JPA 1.0 规范:

抽象类和具体类都可以是实体。抽象类和具体类都可以使用 Entity 注解进行注解,映射为实体,并作为实体进行查询。

实体可以扩展非实体类,非实体类可以扩展实体类.

由于您想要一张表,因此应该使用单桌 http://en.wikibooks.org/wiki/Java_Persistence/Inheritance#Single_Table_Inheritance遗产。

只需定义一个鉴别器列,如下所示:

@Entity
@DiscriminatorColumn(name="REF_TYPE")
public abstract class RefData {

但如果你不想依赖JPA继承策略,你可以使用MappedSuperclass来代替:

@MappedSuperclass
public abstract class RefData {

JPA规范

实体可以从提供持久实体状态和映射信息的超类继承,但它本身不是实体。通常,目的这样一个映射的超类是定义多个实体类共有的状态和映射信息.

记住你不能同时使用@Entity和@MappedSuperclass。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用JPA继承抽象类(+Hibernate) 的相关文章

随机推荐

  • 在 Ionic 2 中使用图像资源的正确方法

    Ionic 2 中图像资源的最佳实践是什么 我有一堆 SVG 想用作非系统图标 我发现了一些关于使用 Gulp 的旧技巧 但似乎 Ionic 团队已决定将 Rollup 作为首选构建工具 到目前为止还没有相关文档 有人告诉我只需将它们添加到
  • 有没有办法通过 QueryDSL 中的 Predicate API 急切地获取惰性关系?

    我正在使用QueryDslPredicateExecutor来自 Spring Data JPA 项目 我面临着急于获取惰性关系的需要 我知道我可以在 Repository 接口中使用本机 JPA QL 查询 甚至可以使用 Query DS
  • 如何使用恢复按钮进入上一个活动?

    我的应用程序工作正常 但我的目的是当我关闭应用程序然后再次运行它时 我的应用程序将在最后一个活动中打开 我希望当我再次打开时 主要活动会显示出来 如果我单击 恢复 则最后一个活动将打开 所以我有4个Activity called Main
  • 内存警告后在 iOS 上运行 OpenGL 崩溃

    我遇到了带有 OpenGL 组件的应用程序在 iPad 上崩溃的问题 该应用程序抛出内存警告并崩溃 但它似乎没有使用那么多内存 我错过了什么吗 该应用程序基于 Vuforia 增强现实系统 大量借鉴了 ImageTargets 示例 我需要
  • 为什么将函数转换为除返回类型之外相同的函数类型会失败? [复制]

    这个问题在这里已经有答案了 可能的重复 返回类型是函数签名的一部分吗 https stackoverflow com questions 290038 is the return type part of the function sign
  • onSelectRow 中的 jqGrid 行对象

    如何获取 jqGrid 中选定行上的行对象 我需要实际的对象 而不是单元格值 我已阅读文档 但找不到可以为我提供行对象的方法 由于我使用自定义格式化程序 因此 cellValue 将不起作用 如果你实施自定义格式化程序 http www t
  • 阶乘递归

    我正在尝试编写一种算法来使用递归函数计算数字的阶乘 这是我的代码 include
  • 如果我们不注销 BroadcastReceiver 会发生什么?

    假设我动态注册一个广播接收器这是一个内部类Activity in onCreate 并且不要在代码中的任何地方取消注册它 现在假设finish 被调用 一段时间后 应用程序再次打开 会使用新的接收者对象吗 考虑到具有相同意图过滤器的旧接收器
  • PEP 412 是否会使 __slots__ 变得多余?

    PEP 412 http www python org dev peps pep 0412 在 Python 3 3 中实现 引入了对属性字典的改进处理 有效减少了类实例的内存占用 slots http docs python org 3
  • Python PyPDF2 合并旋转页面

    我正在使用Python报告实验室 https bitbucket org rptlab reportlab canvas 生成带有水印的覆盖文档 将其合并到源 pdf 文档中 带有PyPDF2 https github com mstamy
  • 使用 iTextSharp 实现 PDF 中的图像透明度

    我有一个传入的 jpg 文件 我可以将其颜色设置为透明 当我将图像添加到另一个图像时 效果非常好 我正在尝试使用 iTextSharp 将相同的图像添加到 PDF 但我无法使透明度发挥作用 我尝试了两种方法 但都不起作用 第一种方法是在位图
  • 两个 Android 应用程序如何相互通信?

    两个 Android 应用程序的一般通信架构是什么 Case 1 我有两个Android应用程序 a 一个是服务器 等待客户端请求 处理请求 从某些 sqlite 数据库读取数据 并将结果返回给客户端 该服务器应用程序在其自己独立的 And
  • 是否可以通过 iOS SDK 在 Facebook 请求对话框中显示所有好友?

    我正在使用 Facebook iOS SDK v3 17 我希望允许用户邀请多个朋友到我的应用程序 而不使用可邀请的朋友 API 我没有 Canvas 应用程序 想知道是否真的可以在多好友选择器中看到用户的所有好友 我的代码是 FBWebD
  • 重命名 CloudFormation 模板中的资源

    您可以重命名 CloudFormation 模板中的资源吗 假设我创建了一个堆栈模板来创建单个 lambda 函数 GetTheFunnyPhraseText Type AWS Serverless Function Properties
  • 如何在纯 Ruby 中使用 Capybara(没有 Rails)?

    我正在尝试让 Capybara 在一个简单的 Ruby 脚本中运行 即没有 在 Rails 之外 这是脚本 require rubygems require capybara require capybara dsl include Cap
  • Python子进程:如何三次使用管道? [复制]

    这个问题在这里已经有答案了 我想在以下行中使用子进程 convert loxie orig png bmp mkbitmap f 2 s 2 t 0 48 potrace t 5 progress s o DSC00232 svg 我发现感
  • Spring WebClient 无法从 REST API 读取数据

    在我的 Spring Boot 应用程序中 我想使用 Spring WebClient 从以下 API 读取数据 如下所示 我之前没有经验 在对许多页面和文章进行多次搜索后 我决定使用 Spring WebClient 端点 URL 是 s
  • 从 Flash 或纯 AS3 项目使用 RemoteObject (AMF)

    我最近将一些代码从 Flex 项目移植到新的纯 AS3 项目 当我尝试进行 AMF 调用时 收到如下错误消息 TypeError 错误 1034 类型强制失败 无法将 Object 5425371 转换为 mx messaging mess
  • MVC.net 2 - 更改 ValidationMessageFor 输出的 HTML - 这可以通过模板进行吗?

    MVC net 2 默认输出验证消息 如下所示 span class field validation valid A Validation message span 我希望它这样做
  • 用JPA继承抽象类(+Hibernate)

    您将如何在以下示例代码中配置注释 我想只坚持使用 JPA 注释并避免 Hibernate 特定的依赖项 下面的代码正确吗 Entity public class RefExample extends RefData 这些类将有多个版本 Re