【问题标题】:Hibernate/JPA Annotations -- Unknown EntityHibernate/JPA 注释——未知实体
【发布时间】:2010-09-21 04:03:05
【问题描述】:

几个月来一直运行良好的应用程序已停止使用几个月来一直是其中一部分的 JPA @Entity 注释。在我的集成测试运行时,我看到了几十个“org.hibernate.MappingException: Unknown entity: com.whatever.OrderSystem”类型错误。

我不清楚这里出了什么问题。

我没有 hibernate.cfg.xml 文件,因为我使用的是 Hibernate Entity Manager。由于我只使用注释,因此我的实体没有 .hbm.xml 文件。我的persistence.xml 文件很小,并且按照应有的方式存在于META-INF 中。

我显然错过了一些东西,但我无法找到它。

我正在使用 hibernate-annotations 3.2.1、hibernate-entitymanager 3.2.1、persistence-api 1.0 和 hibernate 3.2.1。 hibernate-commons-annotations 也是项目 POM 的一部分,但我不知道这是否相关。

是否有 web.xml 条目消失了,或者 Spring 配置条目不小心被删除了?

【问题讨论】:

    标签: java hibernate jpa annotations


    【解决方案1】:

    我似乎记得我曾经遇到过类似的问题。

    这是一个长镜头,但如果您还没有这样做,您是否明确指定了您正在使用的提供程序?

    <persistence ...>
       <persistence-unit ...>
          <provider>org.hibernate.ejb.HibernatePersistence</provider> <---- explicit setting
          ....
       </persistence-unit>
    </persistence>
    

    否则,我不确定?

    【讨论】:

    • 这解决了它。谢谢你。我仍然不明白为什么它会自发停止工作,但我很高兴有一个解决方案。
    • 我认为改变的可能不是你的休眠依赖,而是 JPA-persistence API 依赖本身。据我回忆,当我更新到更高版本的持久性 API 时,事情就停止了?
    • 也可能是你可能只有一个持久化提供者,但是一个新的依赖可能引入了第二个持久化提供者,导致 JPA 迷失了方向?
    【解决方案2】:

    在您的实体类中验证您导入 javax.persistent.Entity 而不是 org.hibernate.annotations.Entity

    【讨论】:

      【解决方案3】:

      这是针对一个特定的类(少数类)还是所有实体类发生的。 persistence.xml 文件有一个类和/或 jar 文件列表,需要扫描这些文件以查找 @Entity 映射。如果它在早期工作,您可以对正常工作的 persistence.xml 版本进行快速比较。另一个问题可能是它正在获取不同的 persistence.xml 文件 - 您可以通过在 persistence.xml 中引入错误(例如,使 xml 无效)来验证这一点。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-06-23
        • 2011-12-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多