【问题标题】:Why would Hibernate ignore package-info.java?为什么 Hibernate 会忽略 package-info.java?
【发布时间】:2012-05-17 14:39:53
【问题描述】:

我正在尝试在包级别上使用 Hibernate @TypeDef 注释,正如 Hibernate documentation 中所描述的那样。 我正在使用Hibernate 3.6Spring 3.0.7。代码编译,package-info.class 在类路径中,但 Hibernate 仍然看不到它。

如果我将@TypeDef 放在班级级别上,它就可以工作,但如果我把package-info 放在上面就不行。我试图用谷歌搜索,但找不到任何有用的东西。

谢谢!

【问题讨论】:

    标签: java hibernate annotations usertype


    【解决方案1】:

    你可能需要添加一个

    <resource package="com.foo.bar.thepackage"/>
    

    到您的 Hibernate 配置文件,或调用 configuration.addPackage("com.foo.bar.thepackage")

    【讨论】:

    • 行得通,谢谢!我正在使用AnnotationSessionFactoryBean,所以添加&lt;property name="annotatedPackages"&gt;helped。
    • 使用 Hibernate 3,而不是 AnnotationSessionFactory,我必须拨打 configuration.addPackage('bla.bla.com') 电话 - 这就像一个魅力。谢谢!
    • 你能告诉我如何使用 EntryManagerFactory 添加这个休眠映射条目例如: com.foo.bar.thepackage
    【解决方案2】:

    对于 Hibernate 4,您必须添加

    <mapping package="com.foo.bar.thepackage">
    

    到你的 Hibernate 配置文件。

    【讨论】:

      【解决方案3】:

      如果使用 JPA,则使用

      persistence.xml 中的
      com.foo.bar.thepackage
      也应该可以工作。

      【讨论】:

      【解决方案4】:

      我认为这是由于 Spring 中的一个错误,它不会扫描 package-info 中的注释,而只会扫描带有 @Entity、@Embeddable 或 @MappedSuperclass 注释的类上的注释。见https://jira.springsource.org/browse/SPR-8589

      【讨论】:

      • 在 3.2.2.RELEASE 版本中修复
      • 对于遇到此问题的人,我建议您查看 SPR-8589 的 cmets。虽然在 Spring 3.2.2 中解决了一些问题,但在 Spring 4.1 甚至更高版本之前,将它与 JPA 一起使用并没有真正开始工作。也可以看一下联票SPR-10910的cmets。
      猜你喜欢
      • 2023-03-25
      • 1970-01-01
      • 2010-09-15
      • 2014-04-01
      • 2016-08-16
      • 1970-01-01
      • 1970-01-01
      • 2021-02-17
      • 1970-01-01
      相关资源
      最近更新 更多