【发布时间】:2022-11-30 17:38:32
【问题描述】:
- 我有一个 Micronaut 项目,我正在尝试使用我在 Spring JPA 中添加的外部实体类在 pom.xml 中添加依赖项来构建项目,但我总是遇到错误:由以下原因引起:io.micronaut.context.exceptions.ConfigurationException:找不到 JPA 配置的实体:包 [packageName] 中的“默认”
- [失败] 我已经在 pom.xml 中添加了我的实体 jar 与“scope compile”的依赖项
- [失败] 已经用“@Introspected(classes = User.class)”创建了一个类文件,User.class 驻留在我的外部实体 jar 中,根据 micronaut 文档,我们可以通过添加注释来使用已经编译的类@Introspected,但这不起作用
- [失败] 如果这可以确定实体类,我还将 @Entity 和 @Introspected 组合在同一个类中,但它不起作用
- [失败] 我还尝试创建一个 AnnotationMapper,这将自动映射包与“javax.persistence.Entity”,参见参考资料https://github.com/micronaut-projects/micronaut-core/blob/3.5.x/inject/src/main/java/io/micronaut/inject/beans/visitor/EntityReflectiveAccessAnnotationMapper.java
- 删除依赖项 micronaut-data-spring-jpa 不需要实体类,但 Micronaut 到 Spring JPA 存储库的自动迁移会出错。
注意:在我的 Micronaut 项目中,我没有 @Entity 类,因为我想使用我制作的 Spring JPA 实体类的外部 jar,这样我就可以将它重用于其他应用程序。
编辑:mvn clean install 或作为日志运行:
io.micronaut.context.exceptions.BeanInstantiationException: 无法加载 Bean 定义 [org.hibernate.SessionFactory]:实例化 [org.hibernate.boot.SessionFactoryBuilder] 类型的 bean 时出错
消息:未找到 JPA 配置的实体:包 [packageName] 中的“默认”。检查您是否在应用程序配置的“jpa.default.entity-scan.packages”属性中正确指定了包含 JPA 实体的包,并且这些实体是使用 Micronaut 编译的还是使用 @Introspected(packages= "foo.bar", includedAnnotations=Entity.class) 在您的应用程序类上声明 采用的路径:SessionFactory.hibernateSessionFactory(SessionFactoryBuilder sessionFactoryBuilder) --> SessionFactory.hibernateSessionFactory([SessionFactoryBuilder sessionFactoryBuilder]) --> SessionFactoryBuilder.hibernateSessionFactoryBuilder([MetadataSources metadataSources],ValidatorFactory validatorFactory,Interceptor hibernateInterceptor)
【问题讨论】:
-
您是否正确设置了注释处理器?您是否看到生成了额外的类?
-
@Denis,你能进一步详细说明吗?如果我是 maven clean install,除了运行应用程序之外,我还会遇到它,请参阅上面的日志(无法在评论中粘贴日志,它太长了)
-
问题可能是您没有在注释处理器类路径中正确设置
io.micronaut:micronaut-inject-java
标签: micronaut-data micronaut-rest