当前位置: 首页 > 知识库问答 >
问题:

Hibernate和JPA错误:依赖Maven项目上的重复导入

杜祺
2023-03-14

我有两个Maven项目,一个叫做project-data,另一个叫做project-rest,它依赖于project-data项目。

Maven构建在project-data项目中是成功的,但在project-rest项目中失败了,但例外情况是:

Caused by: org.hibernate.DuplicateMappingException: duplicate import: TemplatePageTag refers to both com.thalasoft.learnintouch.data.jpa.domain.TemplatePageTag and com.thalasoft.learnintouch.data.dao.domain.TemplatePageTag (try using auto-import="false")

我可以在这里看到一些解释:http://isolasoftware.it/2011/10/14/hibernate-and-jpa-error-duplicate-import-try-using-auto-importfalse/

我不明白的是,为什么在构建project-data项目时不出现此消息,而在构建project-rest项目时出现此消息。

共有1个答案

巢承安
2023-03-14

该错误主要是由于SessionFactorybean位于具有相同逻辑名称TemplatePageTag的两个实体下面:

  • 其中一个位于com.thalasoft.learnintouch.data.jpa.domain包下面。
  • 另一个位于com.thalasoft.learnintouch.data.dao.domain.

自从今年秋天到了一个不寻常的案例,你就会有冬眠抱怨的案例。主要是因为在运行某些HQL查询(基本上是面向实体的查询)时,可能会出现最终的问题,并且可能会有不一致的结果。

>

  • 用不同的名称重命名实体bean,以避免混淆,我认为这在您的情况下不是一个合适的解决方案,因为它可能需要大量的重新分解,并可能损害项目兼容性。

    将您的EJB实体配置为使用不同的名称进行解析。由于使用基于xml的处理配置一个实体,而通过注释配置另一个实体,因此定义实体名称的模式不同:

    >

  • 对于com.thalasoft.learnintouch.data.jpa.domain.templatePageTag实体,您需要将name属性添加到@entity注释中,如下所示:

    @Entity(name = "TemplatePageTag_1")
    public class TemplatePageTag extends AbstractEntity {
      //...
    }
    

    对于com.thalasoft.learnintouch.data.dao.domain.TemplatePageTag,由于它是使用hbm xml声明映射的,因此需要将Entity-name属性添加class元素中,如下所示:

    <hibernate-mapping>
      <class name="com.thalasoft.learnintouch.data.dao.domain.TemplatePageTag"
        table="template_page_tag"
        entity-name="TemplatePageTag_2"
        dynamic-insert="true"
        dynamic-update="true">
    
        <!-- other attributes declaration -->
    
      </class>
    </hibernate-mapping>
    

    当我深入研究项目结构时,您可能还需要修复其他bean的实体名称,因为您已经为许多其他类遵循了相同的模式,例如com.thalasoft.learnintouch.data.jpa.domain.adminModule和com.thalasoft.learnintouch.data.dao.domain.adminModule。

  •  类似资料:
    • 我是maven的新手。(我已经搜索了几个小时的答案,但没有运气。mvn依赖:复制依赖不能解决我的问题)我需要复制项目的所有依赖项(以jar的形式),如果我的一个jar依赖于另一个工件,也复制该工件。 示例project1 pom。xml: “project1”依赖于project2。人工制品罐子当我使用“mvn依赖项:复制依赖项”时,我得到了project2。人工制品但我没有得到project3。

    • 我在尝试使用“create”创建WebClient实例的线路上收到一个NoClassDefFoundError。尝试了builder(),但仍然是一样的。 请告诉我添加的依赖项有什么问题,以及如何解决这个问题。 我添加的依赖项是 StackTrace:

    • 我通过这个链接将一个gradle项目作为依赖项导入另一个gradle项目。有没有办法将maven项目作为依赖项包含到gradle项目中?

    • 我试图使用来自Java的Apache Beam作为某种数据管道。我写了一个简单的类,从谷歌Pubsub和下沉到谷歌Bigquery,但我不能让它为我的生活构建。我使用Maven构建并添加了我能找到的所有Beam包,但我仍然得到“未找到类文件”的错误。 具体来说: 有人知道我需要添加哪些包来解决这些问题吗?不幸的是,谷歌没有提供帮助。 我的POM文件是基于Apache为Wordcount提供的示例P

    • null null 我已经搜索了一些这些错误,有些人说删除“.settings”和“.project”文件可以消除这些错误,但这对我不起作用。 什么可能导致这些错误?有没有解决方法?

    • 我有一个在Swagger上具有编译依赖关系的项目,它带来了jackson databind v2.4.5,还有一个在库上具有testCompile依赖关系的项目,该库使用了AWS SDK,它带来了jackson databind v2.6.6。 从gradle运行测试时,一切正常,正确更新的jackson依赖项v2.6.6位于类路径上: intellij依存关系包含两个版本: 然而,当从Intel