如何将 jar 中的域类导入 Micronaut 项目?

2023-12-12

我有一个配置为使用 GORM 和 Groovy (1) 的 Micronaut 项目。该项目包含许多运行良好的域类,按预期将数据保存在 MySQL 数据库中。

现在我希望使这个域类对于另一个 Micronaut 项目 (2) 是通用的。

我尝试构建一个仅包含域包的 JAR 文件,并将其包含在项目 (2) 中build.gradle。这些类被编译并可以在代码中访问,我可以调用 GORM 方法,例如findBy, createCriteria等等。还值得一提的是,项目 2 的所有域类都带有注释@Entity.

但是,当我运行该项目(使用 IntelliJ idea)并点击其中一些代码时,我得到:

Either class [com.project2.domain.Foo] is not a 
domain class or GORM has not been initialized correctly or has already 
been shutdown. Ensure GORM is loaded and configured correctly before 
calling any methods on a GORM entity.

我知道 GORM 的配置和初始化都很好,因为我在项目 2 中创建了一个“本地”域类,并且一切正常。

在问这个问题之前,我看到了这个,也许它可以带来一些启发:将域类从 GORM 独立模块导入到 Grails 中

编辑 1:当前build.gradle依赖项:

dependencies {
    compile "io.micronaut.configuration:micronaut-kafka"
    compile "io.micronaut.configuration:micronaut-hibernate-validator"

    compile("io.micronaut.configuration:micronaut-hibernate-gorm") {
        exclude group: 'org.grails', module: 'grails-datastore-gorm-hibernate5'
    }
    compile "org.grails:grails-datastore-gorm-hibernate5:6.1.9.RELEASE"

    compile "io.micronaut:micronaut-http-client"
    compile "io.micronaut:micronaut-http-server-netty"
    compile "io.micronaut:micronaut-runtime-groovy"
    compile "io.micronaut:micronaut-validation"
    compileOnly "io.micronaut:micronaut-inject-groovy"
    runtime "ch.qos.logback:logback-classic:1.2.3"

    runtime "org.apache.tomcat:tomcat-jdbc"

    runtime "mysql:mysql-connector-java:6.0.6"

    testCompile "io.micronaut:micronaut-inject-groovy"

    testCompile("org.spockframework:spock-core") {
        exclude group: "org.codehaus.groovy", module: "groovy-all"
    }

    compile files('src/main/resources/libs/my-domain-lib.jar')
}

提前致谢!


我正在使用类似的设置。

我有一个独立的 GORM 核心库,以及几个 (Vert.x) verticles 和 Grails 应用程序,它们通过 gradle 使用compile project() or compile dep:from-artifactory:0.1-SNAPSHOT指令。

为了使其成为可能,我需要:

1)确保每个域类都注释有grails.gorm.annotation.Entity

2) 调整 Grails'Application.groovy像那样:

class Application extends GrailsAutoConfiguration {

  @Override
  protected boolean limitScanningToApplication() {
    false
  }

  @Override
  Collection<String> packageNames() {
    super.packageNames() + 'your.domainclass.package'
  }

}

3)对于无 Grails 项目,我需要自己查找并初始化域类,并且对于每个数据库,它可以是不同的(我的是Mongo-GORM)

ClassPathScanningCandidateComponentProvider compProvider = new ClassPathScanningCandidateComponentProvider( false )
compProvider.addIncludeFilter new AnnotationTypeFilter( Entity )
def domainClasses = compProvider.findCandidateComponents( 'io.my.domain' ).collect{ BeanDefinition bd -> Class.forName bd.beanClassName }
new MongoDatastore( config, *domainClasses )
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 jar 中的域类导入 Micronaut 项目? 的相关文章

随机推荐

  • 在地图中绘制半径为定义距离的圆

    我能够绘制地图并为特定点添加标题 library maps map state text 80 83 35 19 Charlotte cex 6 我还可以绘制一个以该点为中心的圆 symbols 80 83 35 19 circles 2
  • 如何从 HTML 页面获取 Javascript 变量?

    在互联网页面的源代码中 有一个包含 JSON 数据的 Javascript 变量 我想将其存储在 PHP 程序的变量中 知道如何做吗 该文件位于公共 html 链接上 如下所示 感谢您的时间和答复 您使用 互联网上的页面 和 公共 这两个词
  • 如何以编程方式知道它是Android中的平板电脑还是手机? [复制]

    这个问题在这里已经有答案了 我想检测给定的设备是 Android 中的平板电脑还是手机 我已经在模拟器中尝试过这两个 但没有成功 两者都在这里 First if getResources getConfiguration screenLay
  • 如何在 TextArea 上使用 TAB/Enter KeyPressed,并在不使用内部 API 的情况下替换为 focustraversal 或 Enter 键?

    我需要一个可以自动换行 添加滚动条等的控件 但忽略回车键并使用 tab shift 选项卡跳转到下一个控件 我似乎无法弄清楚这一点 这是我做的控件 看起来只是简单的停留在文本区域 这是从网上的一个旧示例中使用的 似乎只有当 textArea
  • JAX-RS / Jersey 中可变参数数组的路径段序列?

    JAX RS Jersey 允许使用以下方法将 URL 路径元素转换为 Java 方法参数 PathParam注释 有没有办法将未知数量的路径元素转换为 vararg Java 方法的参数 I e foo bar x y z应该转到方法 f
  • 选定的表行 angular.js

    我有一张桌子ng class像这样的指令 tbody tr class clickable row td firm fileName td td firm extracted td td firm vulnScore td td fir t
  • 在基本适配器中滚动后,TextView 值更改回之前的值

    我一直在研究这个问题 但找不到解决方案 关于我的自定义列表视图的所有内容似乎都运行正常 当我点击holder feedUpVoteButton 文本发生变化 1正确 但是 当我向下滚动并向上滚动时 文本值将恢复为单击之前的值 我拒绝使用no
  • 如何在Python中过滤字典列表?

    我有一个字典列表 如下所示 VehicleList id 1 VehicleType Car CreationDate datetime datetime 2021 12 10 16 9 44 872000 id 2 VehicleType
  • 如何在javafx中创建动态可调整大小的形状?

    我有三个问题 我想创建带有框边界的可调整大小的形状 我还想知道如何在窗格中选择子项 我正在一个窗格上创建多个形状 我想改变该形状的一些属性 比如填充 我该怎么做 Thanx 下一个例子将回答您的问题 对于 1 它使用绑定 将窗格大小与矩形大
  • 通过邮件发送用户选择的附件

    问题 我希望用户可以向我发送带有附件的邮件 他们可以使用 html 中的输入文件按钮选择文件 问题是找不到该文件 无需附件即可正常工作 我收到这个错误 文件 C 程序文件 x 86 ExpressGIPENGLISH pptx 找不到 II
  • ISO 8601 测试用例的 ECMAScript 5 Date.parse 结果

    以下测试用例的正确结果是什么 Chrome 19 Opera 12 Firefox 11 IE 9 Safari 5 1 1 console log Date parse 2012 11 31T23 59 59 000Z 135440639
  • ArUco 位姿估计中的不稳定值

    我正在尝试使用 Aruco 标记找到相机的方向 从旋转矩阵中提取的欧拉角在超过某一点时不稳定 随着相机与标记的距离增加 相机的偏航角值不稳定 标记上的 Z 轴翻转 欧拉角不稳定 每帧都不相同 需要时间才能稳定 如何获得相机和标记之间的偏航角
  • HTML/CSS 中带 div 的水平(内联)列表

    我正在尝试构建一个简单的水平列表 其中每个列表项都是一个 div 我希望它们全部坐在一起 当我尝试使用下面的代码时 div 最终会出现在不同的行上 这是我所得到的 HTML ul li div div li li div div li li
  • 为Android开发创建库?

    我对 Android 开发还很陌生 但我对 Java 和 Eclipse 有一些经验 我正在寻找创建可重用库 控件 帮助程序 标准 活动等 的方法 这些库可以在我自己的项目中使用 但也可以在不公开源代码的情况下分发给其他开发人员 通常 我会
  • 将十进制小时转换为 HH:MM:SS

    我正在寻找一种将十进制小时转换为 HH MM SS 的方法 例如 作为输入 4 927778 hours 期望的输出 04 55 40 你可以尝试下面的方法 dh lt 4 927778 strftime as POSIXct dh 60
  • 如何删除空格并检查字符串是否是回文?

    我试图弄清楚如何删除空格 然后检查删除空格的字符串是否是回文 我已经分别尝试了这两件事 但我无法让它们一起工作 int check palindrome char int main char s1 20 printf Enter the s
  • QPixmap 保持纵横比

    我正在编写一个程序 允许我通过他们的 API 将照片上传到 TUMBLR 我已经可以正常上传了 谢谢你们 我在 GUI 的一侧放置了一个 queueBox 它显示图像名称 并且它们存储在 QListWidget 中 我已将其放入主类的构造函
  • 错误:无法使用 Spark-submit 加载类 main

    我的代码如下 import org apache spark SparkContext import org apache spark SparkConf object WordCounter def main args Array Str
  • WCF/.NET 中的 C# UTC 日期时间查询

    这是一个非常简单 希望如此 的问题 我刚开始在 NET 中使用日期时间转换 我有一个 WCF 服务 它有一个 DateTime 属性 称之为 BookingDate 有人以以下格式将其传递给我的 WCF 服务
  • 如何将 jar 中的域类导入 Micronaut 项目?

    我有一个配置为使用 GORM 和 Groovy 1 的 Micronaut 项目 该项目包含许多运行良好的域类 按预期将数据保存在 MySQL 数据库中 现在我希望使这个域类对于另一个 Micronaut 项目 2 是通用的 我尝试构建一个