【发布时间】:2019-05-06 09:37:15
【问题描述】:
我有一个配置为使用 GORM 和 Groovy (1) 的 Micronaut 项目。该项目包含许多运行良好的领域类,按预期将数据持久保存在 MySQL 数据库中。
现在我想让这个领域类在另一个 Micronaut 项目中通用 (2)。
我尝试构建一个仅包含域包的 JAR 文件,并将其通过build.gradle 包含在项目 (2) 中。这些类被编译并可以在代码中访问,我可以调用像findBy、createCriteria 等 GORM 方法。还值得一提的是,项目 2 的所有域类都用 @Entity 注释。
但是,当我运行项目(使用 IntelliJ 想法)并点击其中一些代码时,我得到:
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 中创建了一个“本地”域类并且一切正常。
在问这个问题之前我看到了这个,也许它可以带来一些启发:Importing domain classes from GORM-standalone module into 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')
}
提前致谢!
【问题讨论】:
标签: java hibernate grails grails-orm micronaut