如何使用JPA Entity从另一个jar中的外部类创建一个Micronaut项目


  1. 我有一个Micronaut项目,我正试图用我的外部实体类来构建项目,这些类是在Spring JPA中添加在pom.xml中的依赖项,但我总是有一个错误:由:io.micronaut.context.exceptions.ConfigurationException:未找到JPA配置的实体:包内的'默认' [packageName]
  • [失败]我已经添加了我的实体jar的依赖"范围"编译"在pom.xml
  • [失败]已经创建了一个带有"@Introspected(classes = User.class)&quot的类文件,User.class位于我的外部实体jar中,根据microaut文档,我们可以通过添加@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 Entity类的外部jar,以便我可以将其重用到其他应用程序。

编辑:mvn clean install or run as log:

io.micronaut.context.exceptions.BeanInstantiationException:Bean定义[org.hibernate.]无法加载SessionFactory:实例化[org.hibernate.boot.SessionFactoryBuilder]类型bean时出错

消息:在package [packageName]中没有找到JPA配置:'default'的实体。检查您是否正确地指定了包含JPA实体的包,该包位于"JPA . defaults .entity-scan.packages"属性,并且这些实体要么是用Micronaut编译的,要么是用在应用程序类上声明的@Introspected(packages="foo.bar" includedAnnotations=Entity.class)生成的构建时索引采取的路径:SessionFactory。hibernateSessionFactory(SessionFactoryBuilder)——>SessionFactory。hibernateSessionFactory([SessionFactoryBuilder SessionFactoryBuilder])—>SessionFactoryBuilder。hibernate esessionfactorybuilder ([MetadataSources MetadataSources],ValidatorFactory ValidatorFactory,Interceptor hibernateInterceptor)

我是这样解决我自己的问题的:

  1. 我又从头开始,我使用https://micronaut.io/launch/生成工作空间(类似于https://start.spring.io/,用于spring)
  2. 我没有直接使用来自外部jar的User.class,而是首先在micronaut项目(包括存储库)上创建它,并证明应用程序启动和工作(我还公开了一个服务以触发测试)然后,我将User.class的引用从本地更改为外部jar。当我最初尝试它时,没有"@Introspected", "没有找到持久类",但是使用@Introspected"它可以工作。
  3. 我能够使用来自外部类的实体,但不能使用存储库类(目前,不会进一步研究如何使用外部jpa存储库类进行微操作)

我也遇到过同样的问题,我是这样解决的:

  • 添加@Introspected(classes={Entity}.class)到您的Application.java你的微航天员项目
@Introspected(classes = {Entity}.class)
public class Application {
public static void main(String[] args) {
Micronaut.run(Application.class, args);
}
}

这将导入JPA实体类,使承认它作为一个JPA实体

提醒一下:你必须用

中的@Entity注释{Entity}类

import javax.persistence.Entity;

相关内容

  • 没有找到相关文章

最新更新