为了账号安全,请及时绑定邮箱和手机立即绑定

不同包中的实体创建“引用未知实体”(多数据源场景)

不同包中的实体创建“引用未知实体”(多数据源场景)

芜湖不芜 2021-12-10 15:26:42
我目前有 2 个不同的数据源配置可以正常工作。但是因为实体越来越多,我想把它们放在不同的包装上。这是文件夹结构和数据库配置。本地数据库配置。(2张)文件夹结构是这样的发生的异常:org.springframework.beans.factory.BeanCreationException:在类路径资源 [com/bennusoft/merlin/robot/business/database/LocalDBConfig.class] 中定义名称为“localEntityManager”的 bean 创建时出错:调用 init 方法失败;嵌套异常是 org.hibernate.AnnotationException: @OneToOne 或 @ManyToOne on com.bennusoft.merlin.robot.business.database.a.BilyonerBahisSoccerSpecialDatabase.iddaaGeneralDatabases 引用了一个未知实体:com.bennusoft.merlin.robot.business.database.IddaGeneralDatabase如果 BilyonerBahisSoccerSpecialDatabase 在同一个包中,它会简单地运行没有问题。但是当它低于包时,就会发生异常。不知何故,在我看来,从 BilyonerBahisSoccerSpecialDatabase 到上层包没有看到。但我不知道我实际上可以在哪里。我怎样才能使这个工作与不同的包一起工作?更新 1: 如果我只使用 .packages(IddaaGeneralDatabase.class) 保留在 factorybean 中,问题就解决了。所以我的问题实际上正在改变。为什么添加不同的包会破坏它?
查看完整描述

1 回答

?
不负相思意

TA贡献1777条经验 获得超10个赞

来自EntityManagerFactoryBuilder.java Builder.packages(Class<?>... basePackageClass)方法的源代码


    public Builder packages(Class<?>... basePackageClasses) {

        Set<String> packages = new HashSet<>();

        for (Class<?> type : basePackageClasses) {

            packages.add(ClassUtils.getPackageName(type));

        }

        this.packagesToScan = StringUtils.toStringArray(packages);

        return this;

    }

以及如何调用构建器方法


  return builder.dataSource(mysqlDataSource())

                .properties(hibernateProperties())

                .packages(IddaaGeneralDatabase.class)

                .packages(BilyonerBahisSoccerSpecialDatabase.class)

                .....

您调用包方法的方式不正确。每次调用packages方法this.packagesToScan的Builder将被覆盖。因此,在您第二次调用之后,this.packagesToScan现在com.bennusoft.merlin.robot.business.database.a和包com.bennusoft.merlin.robot.business.database中的类不会被扫描。另外,在你更新后,第二个调用被移除,this.packagesToScan保留为com.bennusoft.merlin.robot.business.database,这个包和子包被扫描,因此问题解决了。


如果您需要添加其他类,该类的一个包不是其他类的子包,则可以调用builder.packages(ClassA.class, ClassB.class)。


最后,下次请尝试将代码复制并粘贴到帖子而不是屏幕帽,这有助于我们阅读/复制代码并了解您的问题。


查看完整回答
反对 回复 2021-12-10
  • 1 回答
  • 0 关注
  • 156 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信