子类上的重复生成器序列休眠

2023-12-15

我按照这篇文章来解决我最初的问题:在 Hibernate 中的子类上指定每个表的不同序列

但现在我得到一个例外:

调用init方法失败;嵌套异常是 java.lang.IllegalArgumentException:重复的生成器名称 idgen

在我的类、子类和 pom.xml 下面:

EntityId(抽象类)

@MappedSuperclass
public abstract class EntityId<T extends Serializable> implements Serializable {

    private static final long serialVersionUID = 1974679434867091670L;

    @Id
    @GeneratedValue(generator="idgen", strategy=GenerationType.SEQUENCE)
    @Column(name="id")
    protected T id;

    public T getId() {
        return id;
    }

    public void setId(T id) {
        this.id = id;
    }

}

类别类

@Entity
@SequenceGenerator(name="idgen", sequenceName="cat_id_seq", allocationSize=1)
@AttributeOverrides({
    @AttributeOverride(name="id", column = @Column(name="cat_id"))
})
@Table(name="categoria")
public class Category extends EntityId<Integer> {

    private static final long serialVersionUID = -870288485902136248L;

    @Column(name="name")
    private String name;

    @Column(name="description")
    private String description;

}

pom.xml

...
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>5.2.15.Final</version>
</dependency>
...

我的问题与这篇文章类似:https://hibernate.atlassian.net/browse/HHH-12329


从您提供的链接。 JPA 规范指出:

序列生成器可以在实体类或 主键字段或属性。生成器名称的范围是 持久性单元的全局性(跨所有生成器类型)。

因此,拥有两个具有相同名称和不同配置的标识符生成器是不合法的。范围是全局的,不是实体的。

要解决您的问题,您应该将 @Id 从 @MappedSuperclass 推送到子类中。

更多细节


编辑,添加了可能的解决方法:

  • 从超类中的字段中删除注释;
  • 让 getter 变得抽象;
  • 让所有子类都有自己的序列生成器:所有生成器都应该有全局唯一的名称;
  • 实现吸气剂;
  • 将与 Id 字段相关的注释移到 getter 上。

public interface EntityId<T extends Serializable> extends Serializable {

    public T getId();

    public void setId(T id);

}

@Entity
@Table(name="categoria")
public class Category implements EntityId<Integer> {

    private static final long serialVersionUID = -870288485902136248L;

    @Id
    @Column(name="cat_id")
    @SequenceGenerator(name="cat_id_gen", sequenceName="categoria_cat_id_seq", allocationSize=1)
    @GeneratedValue(generator="cat_id_gen", strategy=GenerationType.SEQUENCE)
    private Integer id;

    //others attributes here...

    @Override
    public void setId(Integer id) {
        this.id = id;
    }

    @Override
    public Integer getId() {
        return this.id;
    }

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

子类上的重复生成器序列休眠 的相关文章

  • 如何迭代所有注册表项?

    我正在尝试迭代所有注册表项以查找 包含 并删除 jre1 5 0 14 值 有办法做到吗 下面的代码只是在特定键下找到jre1 5 0 14 我确实想迭代所有的键 顺便说一句 if 子句获取是否等于 jre1 5 0 14 但如果它包含 j
  • JavaFX Platform.runLater 的使用以及从不同线程访问 UI

    我有几个问题Platform runLater 我有一个 JavaFX 应用程序类 在这个类中 我运行一个线程 该线程从网络套接字读取数据 现在当我创建一个新的Stage在线程内部 系统抛出异常 JavaFX 事件调度程序线程和我的网络读取
  • 实现与扩展:何时使用?有什么不同?

    请用易于理解的语言进行解释或提供某些文章的链接 extends is for 延伸一类 implements is for 实施一个接口 接口和常规类之间的区别在于 在接口中您不能实现任何声明的方法 只有 实现 接口的类才能实现方法 C 中
  • Javadoc 1.5 和 1.6 中缺少 enum.valueOf(String name)

    这可能是一个愚蠢的问题 但我正在使用该方法enum valueOf String name 那里没问题 只是当我检查 javadoc 以了解有关此方法的更多信息时 我找不到它 有javadoc用于valueOf Class
  • 无法实例化接收器 com.parse.GcmBroadcastReceiver

    我正在编写一个使用 GCM 通知和解析推送的离子应用程序 这个应用程序正在使用这些插件 com ionic keyboard 1 0 3 Keyboard com phonegap plugins PushPlugin 2 4 0 Push
  • 如何识别 Java 中的不可变对象

    在我的代码中 我正在创建一个对象集合 这些对象将由各种线程以只有在对象不可变的情况下才安全的方式访问 当尝试将新对象插入到我的集合中时 我想测试它是否是不可变的 如果不是 我将抛出异常 我能做的一件事是检查一些众所周知的不可变类型 priv
  • 在 TestNG 中运行多个类

    我正在尝试自动化一个场景 其中我想登录一次应用程序 然后进行操作而无需再次重新登录 考虑一下 我有在特定类的 BeforeSuite 方法中登录应用程序的代码 public class TestNGClass1 public static
  • Java Spring 应用程序存在内存泄漏。系统非堆内存不断增加

    我已使用 yourkit 分析器监视我的 Web 应用程序 保留最大大小的主要对象是 SessionFactoryImpl webappclassloader 和 CGlib 对象显示 spring crone调度程序会导致内存泄漏吗 我尝
  • 以编程方式设置 Logback Appender 路径

    我正在尝试以编程方式设置 Logback 附加程序路径 滚动文件附加器 http logback qos ch apidocs ch qos logback core rolling RollingFileAppender html准确地说
  • C# 中的协变和逆变

    首先我要说的是 我是一名正在学习 C 编程的 Java 开发人员 因此 我会将我所知道的与我正在学习的进行比较 我已经使用 C 泛型几个小时了 我已经能够在 C 中重现我在 Java 中知道的相同内容 除了几个使用协变和逆变的示例 我正在读
  • 从 sbt 程序集运行 uber jar 会导致错误:无法找到或加载主类

    我有一个使用 sbt 程序集插件打包为 uber jar 的 Spark 作业 这build sbt指定一个可运行的 main 作为生成的 uber jar 的目标 mainClass in assembly Some com foo Ba
  • 打印 jasper 文件时执行报表 SQL 语句时出错

    我修改了一个旧项目 但无法确定这段代码有什么问题 使用下面的 jrxml它创造 jasper文件 当我打印 jasper 文件时 使用此代码JasperPrint jasperPrint JasperFillManager fillRepo
  • Java:使用 Java.util.concurrent 线程访问读取线程串行端口

    我正在尝试编写一个 Java 串行设备驱动程序并想使用 对我来说是新的 java util concurrent包裹 我有一种发送数据包然后等待 ACK 的方法 我打算有炭 接收在不同的线程中运行 如果接收线程收到 ACK 它应该使用发送数
  • 如何从 Google Custom Search API 获取超过 100 个结果

    我正在尝试使用 Google Custom Search API 在 Java 中进行研究 因此 我需要为每个查询提供一个大的结果集 然而 我似乎仅限于前 100 个结果 这比我需要的要少得多 我使用这样的列表方法 list setStar
  • 如何使用 Guava 连接字符串?

    我写了一些代码来连接字符串 String inputFile for String inputLine list inputFile inputLine trim 但我不能使用 连接 所以我决定使用 Guava 所以我需要使用Joiner
  • 抽象类或接口。哪种方式是正确的?

    有两种方法可以选择抽象类或接口 微软解决方案和Oracle解决方案 微软 设计指南 请使用抽象 在 Visual Basic 中为 MustInherit 类而不是接口来将协定与实现分离 http msdn microsoft com en
  • 如何使用云打印打印Android活动显示

    我正在尝试将 Google 云打印实现到应用程序中 遵循集成指南 https developers google com cloud print docs android 我试图通过打印 google com 来保持基本 单击我创建的打印按
  • 战争库中的罐子爆炸

    我们可以将分解的 jar 文件放入 war web inf 库中吗 它在 JBOSS 4 2 中对我不起作用 我收到以下错误并且无法部署应用程序 Caused by javax management RuntimeOperationsExc
  • H2 - (相当)长的 INSERT 失败,错误 42000

    H2 内存中 插入 错误 42000 尝试过版本 1 4 196 1 4 197 1 4 199 我还尝试在 H2 服务器 本地 上执行 INSERT 也失败 给出错误的行 抱歉 但出于安全原因 我无法生成更多 INSERT INTO tb
  • 如果抛出RuntimeException,是否可以将其作为异常捕获?

    如果我有一个try抛出一个块RuntimException子类 可以是后续的catch块将其捕获为Exception 具体来说 public class MyAppException extends RuntimeException In

随机推荐

  • 如何在新行上打印Python列表的每个第n个索引?

    我正在尝试打印一个列表 并且对于每 5 个索引 它会打印一个新行 例如 如果我有 1 2 3 4 5 6 7 8 9 10 输出将是 1 2 3 4 5 6 7 8 9 10 到目前为止我尝试过 lst 1 2 3 4 5 6 7 8 9
  • iFrame隐藏滚动条但仍然可以用鼠标滚轮滚动

    我想做的是制作一个 iPhone 模拟器 并在 iFrame 中显示一个网页 滚动条占用了太多空间 因此我想隐藏它们 但仍然可以滚动 这是 HTML div p Your Browser does not support iFrames p
  • 尝试使用 axios 将 svg 图像上传到 Cloudflare 时遇到问题

    我在运行此代码时遇到 svg 文件问题 png 和 jpgs 文件正确上传到 Cloudfare 但是当出现 svg 文件时 它返回此错误 错误 9422 解码错误 图像解码失败 上传的图像必须具有 image jpeg 或 image p
  • RingtonePreference 未触发 OnPreferenceChangeListener

    我拥有的所有其他首选项都会触发其 OnPreferenceChangeListener 但是 我的 RingtonePreference 却没有 p getPreferenceScreen findPreference pref tone
  • 在 Spring 3 中为控制器实现 AOP

    如何使用带注释的控制器实现 AOP 我搜索并找到了之前关于该问题的两篇文章 但似乎无法找到有效的解决方案 发布解决方案1 发布解决方案2 这是我所拥有的 调度 Servlet
  • Angular2 中基于枚举进行选择

    我有这个枚举 我正在使用打字稿 export enum CountryCodeEnum France 1 Belgium 2 我想建立一个select in my form 对于每个option枚举整数值作为值 枚举文本作为标签 如下所示
  • jQuery 事件委托

    我需要一些有关回调的帮助 由于某种原因 它们的工作效果并不是很好 我正在用 jQuery 制作一个游戏 我有一个 div div 对于游戏中将出现的所有按钮 游戏将有两个执行操作的按钮 上面有一个问题 该问题由一个控制 h3 h3 我想知道
  • 如何使 opencart 多商店在多个 TLD 上共享同一个购物车?

    我有以下场景 已安装domain1 com store1 opencart 1 5 6 域名2 com 商店2 域名3 com store3 我设法在不同的域上安装所有 3 个商店 并且所有商店都使用相同的 opencart 安装 stor
  • Minitest:如何使用模拟进行存根并验证其参数

    这是一个关于模拟类方法的小例子module Email 该方法称为connect and send require minitest autorun module Email def self connect and send args n
  • C++ 和 C# 中的二进制序列化/反序列化

    我正在开发一个具有两个组件的分布式应用程序 一种是用标准 C 编写的 不是托管C 并在 Linux 平台上运行 另一个是用 C 编写的 两者都通过消息总线进行通信 我遇到的情况是 我需要将对象从 C 传递到 C 应用程序 为此我需要在 C
  • 如何使用 Pooled Spring bean 而不是 Singleton bean?

    出于效率原因 我有兴趣限制同时使用 Spring 应用程序上下文的 bean 的线程数量 我不希望无限我的处理线程数limited记忆 我已经发现here spring 文档 一种通过以 EJB 样式池化 bean 来实现此目的的方法 方法
  • 添加相同类型的自定义解析器时,默认参数解析器会发生什么情况?

    所以我想将最大可分页大小值限制为 10 示例值 我可以这样做 Configuration public class MvcConfiguration extends WebMvcConfigurerAdapter Override publ
  • 如何将 Selenium WebDriver 嵌入为 WPF 控件?

    有没有办法嵌入WebDriver驱动程序到 WPF 窗口 类似于 WPFWebBrowser控制 或者 有没有一种方法可以在WebBrowser控制自己 到目前为止 只能创建一个新的WebDriver窗口 与应用程序中的任何其他 WPF 窗
  • SQL Server 连接最新 2 个条目

    我知道帖子的标题很糟糕 但请听我说完 前几天工作中出现了这样的问题 虽然我找到了解决方法 但这个问题仍然困扰着我 假设 Stackoverflow 只有 3 个表 Users username Comments comment creati
  • 如何为现有 Azure WebApp 添加 Application Insights

    我在 Azure 中有 10 个 Web 应用程序 但我无法为它们配置 Application Insights 因为我还没有使用它们保存项目 当我在 VisualStudio 中创建新的 WebApp 时 可以为应用程序添加 Applic
  • Java:检测三击而不触发双击

    我有一个 JTable 我想在双击单元格时调用一个函数 并在三次单击单元格时调用另一个函数 当单元格被三次单击时 我不想调用双击功能 我现在拥有的是 mgrdAlarm 是 JTable mgrdAlarm addMouseListener
  • 多路 FunDeps 以及与重叠实例的一致性:(为什么)这有效?

    这是旧栗子的变体 我写它的时候以为它不会起作用 但它确实起作用了 还是它很狡猾 在 GHC 8 6 5 中 LANGUAGE MultiParamTypeClasses FlexibleInstances FlexibleContexts
  • 实体框架数据库种子不种子

    我对 EF 还很陌生 我正在尝试覆盖Seed我的自定义初始化程序中的方法 使用 MVC 4 问题是当 EF 创建数据库时 我没有发现任何初始记录插入到我的数据库中Admins桌子 这是我的代码 namespace FP Domain Con
  • Ionic 3 错误 没有 AppVersion 的提供程序

    我正在使用 Ionic 3 延迟加载 我收到此错误 但似乎找不到我的方法的错误 错误 没有 AppVersion 的提供者 I have 设置 module ts import NgModule from angular core impo
  • 子类上的重复生成器序列休眠

    我按照这篇文章来解决我最初的问题 在 Hibernate 中的子类上指定每个表的不同序列 但现在我得到一个例外 调用init方法失败 嵌套异常是 java lang IllegalArgumentException 重复的生成器名称 idg