是否可以为 Java 11 和 java 模块生成 hibernate 元模型?

2023-11-30

我有一个带有 JPA 实体和 persistence.xml 的 java 模块,我想生成元模型。我尝试了两种变体。

变体1

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <source>${maven.compiler.source}</source>
                <target>${maven.compiler.target}</target>
                <annotationProcessorPaths>
                        <annotationProcessorPath>
                                <groupId>org.hibernate</groupId>
                                <artifactId>hibernate-jpamodelgen</artifactId>
                                <version>5.4.14.Final</version>
                        </annotationProcessorPath>
                        <path>
                                <groupId>javax.xml.bind</groupId>
                                <artifactId>jaxb-api</artifactId>
                                <version>2.3.0</version>
                        </path>
                        <path>
                                <groupId>javax.annotation</groupId>
                                <artifactId>javax.annotation-api</artifactId>
                                <version>1.3.1</version>
                        </path>
                </annotationProcessorPaths>
            </configuration>
            <dependencies>
            </dependencies>
        </plugin>

Result:

Caused by: java.lang.NullPointerException
    at org.hibernate.jpamodelgen.ClassWriter.writeGeneratedAnnotation(ClassWriter.java:202)
    at org.hibernate.jpamodelgen.ClassWriter.generateBody(ClassWriter.java:100)
    at org.hibernate.jpamodelgen.ClassWriter.writeFile(ClassWriter.java:53)
    at org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor.createMetaModelClasses(JPAMetaModelEntityProcessor.java:145)
    at org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor.process(JPAMetaModelEntityProcessor.java:135)
    at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:972)
    at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:888)
    at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1214)
    at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1326)
    at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1258)
    at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:936)
    at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.lambda$doCall$0(JavacTaskImpl.java:104)
    at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.handleExceptions(JavacTaskImpl.java:147)
    ... 28 more

变体2

    <plugin>
        <groupId>org.bsc.maven</groupId>
        <artifactId>maven-processor-plugin</artifactId>
        <version>3.3.3</version>
        <executions>
            <execution>
                <goals>
                    <goal>process</goal>
                </goals>
                <phase>generate-sources</phase>
                <configuration>
                    <compilerArguments>-AaddGeneratedAnnotation=false</compilerArguments>
                    <processors>
                      <processor>org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor</processor>
                    </processors>
                </configuration>
            </execution>
        </executions>
        <dependencies>
            <dependency>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-jpamodelgen</artifactId>
                <version>5.4.14.Final</version>
            </dependency>
        </dependencies>
    </plugin>

结果出现很多错误,如下所示:

[ERROR] diagnostic: /home/<deleted>/src/main/java/module-info.java:11: error: module not found: org.slf4j
    requires org.slf4j;
                ^
[ERROR] diagnostic: /home/<deleted>/src/main/java/module-info.java:15: error: module not found: java.persistence
    requires java.persistence;
                 ^

是否可以为 Java 11 和 java 模块生成 hibernate 模型?


以前不可能,现在有可能了。我打开了一个问题maven-processor-plugin他们做了必要的修改。所以,使用版本4.0-rc1+和以下代码:

        <plugin>
            <groupId>org.bsc.maven</groupId>
            <artifactId>maven-processor-plugin</artifactId>
            <version>4.0-rc1</version>
            <executions>
                <execution>
                    <goals>
                        <goal>process</goal>
                    </goals>
                    <phase>generate-sources</phase>
                    <configuration>
                        <processors>
                            <processor>org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor</processor>
                        </processors>
                        <compilerArguments>-AaddGeneratedAnnotation=false</compilerArguments>
                    </configuration>
                </execution>
            </executions>
            <dependencies>
                <dependency>
                    <groupId>org.hibernate</groupId>
                    <artifactId>hibernate-jpamodelgen</artifactId>
                    <version>5.4.14.Final</version>
                </dependency>
            </dependencies>
        </plugin>

Edit:这是链接到issue.

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

是否可以为 Java 11 和 java 模块生成 hibernate 元模型? 的相关文章

  • ProcessBuilder 未正确执行 Java 类文件

    在一个java文件中 我调用命令行语句来执行另一个java文件 这就是我正在做的 List
  • 为什么这不会绘制图像?

    我想做的是 当我运行应用程序时 它会启动线程并且图像显示 3 秒 3000 毫秒 然后线程停止运行 图片路径正确 图片文件存在 线程本身运行 但是 图像似乎没有显示 可能出什么问题了 这是我的代码 package org main impo
  • 使用 Java 的 OpenId 提供者/服务器

    我正在尝试使用 OpenId 服务增强现有的 Java Web 应用程序 以便登录用户可以使用我的 Web 应用程序作为 OpenId 提供程序登录另一个启用 OpenId 的应用程序 My first attempt was to use
  • 杰克逊.将缺失的属性反序列化为空Optional

    假设我有一堂这样的课 public static class Test private Optional
  • 我如何通过代码在 Anylogic 中创建路径空间标记元素

    我在anyloigic方面完全是菜鸟 现在我正在尝试通过代码创建简单的网络 具有两个点节点的网络 以及链接这些节点的路径 遇到一些问题 当我运行模型时 控制台显示 使用初始化 方法 但我已经知道 初始化方法在较低版本中已被弃用 我使用的是8
  • 当目标是属性时,@Throws 不起作用

    在看的同时这个问题 https stackoverflow com q 47737288 7366707 我注意到申请 Throws to a get or setuse site 没有影响 此外 唯一有效的目标 for Throws ar
  • 正则表达式或用单个空格替换多个空格的方法

    你能告诉我有没有办法在java或spring中用单个空格替换多个空格 有相同的 stringUtils 函数吗 like 1 test test test test 2 test test test test 3 test test tes
  • 设置 MetaspaceSize 的指南 - java 8

    64 位服务器的 MetaspaceSize 默认值是多少 我在官方文档中没有找到它 我观察到 在服务器 JVM 进程中 GC 频率有时会变高并持续增长 如果我重新启动服务几次 它就会恢复稳定 我认为这是由于 JRE 升级造成的 JVM 堆
  • Spring Data (JPA) 多个存储库,没有很多类

    在我当前的项目中 我使用 Spring Data JPA 并且有 20 多个 Entity类 我想为它们创建存储库 但创建另一个类 每个类适用于任何模型 Repository注释似乎是某种矫枉过正和大量 重复 代码 所有存储库类将如下所示
  • kafka消费端Offsets的一致性

    我有复制因子为 3 的卡夫卡主题min insync replicas 2 一个向该主题发送 X 条消息的生产者acks all 一段时间后 1 分钟内 在所有消息发送到主题后 将使用 java kafka 客户端为此主题创建新的消费者 使
  • 将 Spring ModelAttribute 应用于所有使用特定参数类型的控制器

    在 Spring Boot REST 应用程序中 我有一个TableRequest包含表格数据 GET 请求的列排序 筛选和分页详细信息的类型 它是通用的 因为它不关心所请求的具体数据是什么 它只指定通用表参数 因此它适用于许多不同的控制器
  • 如果在构造函数中使用 super 调用重写方法会发生什么

    有两个班级Super1 and Sub1 超1级 public class Super1 Super1 this printThree public void printThree System out println Print Thre
  • 将 try catch finally 块放入另一个 finally 块中

    try catch finally try catch finally 上面的代码好不好 是的 你可以这样做 实际上 在处理想要正确关闭的流时 您甚至需要这样做 InputStream in try catch finally try in
  • android中ScrollView中的图像

    在我的应用程序中 我想放置一个 png 文件 并且希望它在横向和纵向模式下都被视为滚动图像 请建议代码或示例 要使您的 Imageview 在高度不适合时滚动 您可以在 xml 中的 ScrollView 内添加一个 ImageView 并
  • java.lang.NoClassDefFoundError: org/apache/commons/cli/ParseException

    我想将 apache cli 添加到我的应用程序中 但我有问题 当我尝试运行它时显示这些错误 Error A JNI error has occurred please check your installation and try aga
  • Guava MultiSet 与 Map?

    我对Multiset的理解是一个带有频率的集合 但是我总是可以使用Map来表示频率 还有其他原因使用Multiset吗 优点Multiset
  • 如何将模型从 ML Pipeline 保存到 S3 或 HDFS?

    我正在尝试保存 ML Pipeline 生成的数千个模型 正如答案中所示here https stackoverflow com questions 32121046 run 3000 random forest models by gro
  • 如何在 Android 上设置 Google Drive API?

    我一直在尝试将 Google Drive 功能集成到我的应用程序中 但我无法使用任何内置功能 因此我相信我要么错过了一个步骤 要么做得不正确 我正在遵循官方的 Google 开发者指南 https developers google com
  • Android,Volley请求,响应阻塞主线程

    使用 Volley 处理较大响应时会发生一些不好的事情 String url AppHelper DOMAIN service pages profile update json this infoTextView setText getS
  • 如何在服务器上获取球衣日志?

    我正在使用球衣进行 REST WS 如何在服务器端启用球衣日志 很长的故事 我收到客户端异常 但我在 tomcat 日志中没有看到任何内容 它甚至没有到达我的方法 由于堆栈跟踪显示 toReturnValue 它确实从服务器获取了一些内容

随机推荐

  • GraalVM 本机映像无法处理日志

    我尝试做的事情 mvn package Dpackaging docker native Dmicronaut runtime lambda Pgraalvm 我得到什么 Caused by com oracle graal pointst
  • 如何使用Python通过空格键开始移动乌龟

    我正在尝试在 python 中设置一个简单的乌龟程序 在其中我可以通过按空格键开始移动乌龟 并且他会一直移动 直到我再次按下空格键 我可以用空格键让他移动固定距离 但无法让它继续 这是我正在处理的内容 from turtle import
  • 在VBA中使用Solver将计算模式设置为手动

    在试图帮助解决这个问题 我在 VBA 中的 Solver 中遇到了一些非常奇怪的行为 我想知道如果其他人可以复制它或者如果我的系统有问题 Windows 10 Excel 2016 以及如果有人能告诉我发生了什么事 工作簿设置非常简单 这是
  • 隐藏 ICS 返回主页任务切换器按钮

    只是想知道如何以编程方式隐藏 ICS 返回 主页 等软件按钮 就像 Youtube 应用程序在播放视频时所做的那样 我想在视频播放时隐藏它们 但如果用户点击屏幕则将它们显示出来 我似乎无法在网络上或谷歌文档中找到它 Pinxue 正好 你想
  • 在 UserDefaults 中存储自定义对象数组

    我花了很长时间试图弄清楚如何在 UserDefaults 中存储我的自定义结构数组 这是我的代码 struct DomainSchema Codable var domain String var schema String var dom
  • 跨多列的堆叠条形图

    我设法将初始数据集转换为以下形式 ElemId total count coef true coef false coef ratio 1 a1 2 2 0 1 2 a2 4 4 0 1 3 a3 1 1 0 1 4 a4 5 5 0 1
  • 低功耗蓝牙 (BLE) - 如何分别获取服务、特征和描述符的 UUID

    在蓝牙低功耗协议的问题上苦苦挣扎 例如 一个设备有一个服务 该服务包含一个包含描述符的特征 服务的 UUID 特征和描述符事先未知 我的问题是如何以我们知道这个特定 UUID 是一种服务 特性 描述符的方式获取它们的 UUID Blueto
  • 将 Django 模型/表拆分为两个模型/表是否有性能优势?

    In 所以问题7531153 我询问了将 Django 模型一分为二的正确方法 使用 Django 的多表继承或显式定义 OneToOneField Based 卢克 斯内格评论 我很好奇将模型一分为二是否会带来性能提升 我考虑将模型分成两
  • 如何使用 jQueryUI 日期选择器和 HTML5 时间输入来比较日期/时间值?

    我想验证页面上的 开始 日期 时间对早于 结束 日期 时间对 我正在使用 jQueryUI 日期选择器和 HTML5 时间输入元素 小部件 这个 jQuery var begD datepicker parseDate mm dd yy B
  • 如何在 Oracle 中查询 CLOB 列

    我正在尝试运行一个查询 该查询包含一些 CLOB 数据类型的列 如果我像平常一样运行查询 所有这些字段都有 CLOB 作为值 我尝试使用DBMS LOB substr column 我得到了错误 ORA 06502 PL SQL numer
  • 自定义 Java Swing Meter 控件

    我正在尝试制作一个自定义的摆动控件 即米 摆动计 http dl dropbox com u 2363305 Programming Java swing meter gif 箭头将上下移动 这是我当前的代码 但我觉得我做错了 import
  • 带主体参数的改造 POST 请求 android

    我需要通过改造来执行发布请求 但我有一个我不太理解的问题 在尝试使用代码之前 我测试了 api 调用Postman和请求看起来像这样 这是我的安卓代码 public class API private static
  • 如何使用 Python Regex 查找首字母为大写的所有单词

    我需要找到文件中以大写字母开头的所有单词 我尝试了下面的代码 但它返回一个空字符串 import os import re matches filename C Users Documents romeo txt with open fil
  • iPhone 上的内存问题

    我开发了一个小型 iphone 商业应用程序 在我的应用程序中 我使用从服务器获取的数据 如果那时数据将存储在手机内存或 RAM 上 我认为它不安全 所以我将决定存储另一个自定义位置 这在手机中可能吗 有什么好的想法吗 如果您想要良好的安全
  • 在asp.net中使用文本框进行Gridview过滤

    我想知道如何根据文本框中输入的字符动态搜索或过滤网格视图中的记录 实现这一目标的最佳方法是什么 任何示例代码或示例都会非常有帮助 这里的技巧是仅进行数据绑定当搜索框中的文本发生变化时 但您必须始终设置数据源选择命令代码 因此 您添加一个文本
  • “svn list”忽略外部

    我的 SVN 树中有一个名为 library 的目录 它使用外部加载库 例如 zend Framework smarty 我使用一个自己编写的工具 它使用 svn list 我可以在其中选择应该上传到服务器的文件 看起来 svn list
  • 如何在 foreach 循环内从数组中删除对象?

    我遍历一个对象数组 并想根据其中一个对象的 id 属性删除它 但我的代码不起作用 foreach array as element foreach element as key gt value if key id value search
  • 如何设置 MSMQ 服务器以便可以通过 Internet 访问它

    我们在 Windows 2008 R2 服务器上有 MSMQ 并具有以下防火墙设置 1 在 允许程序通过 Windows 防火墙进行通信 中选中消息队列 2 启用TCP端口 2103 2105 1801 但是 当 C 应用程序 使用 For
  • 放大 cli :npm 错误!超出最大调用堆栈大小

    执行时 npm install g aws amplify cli 结果是 npm ERR Maximum call stack size exceeded npm ERR A complete log of this run can be
  • 是否可以为 Java 11 和 java 模块生成 hibernate 元模型?

    我有一个带有 JPA 实体和 persistence xml 的 java 模块 我想生成元模型 我尝试了两种变体 变体1