代码之家  ›  专栏  ›  技术社区  ›  Lucas de Oliveira

Hibernate3.5或3.6不支持@Any注解?

  •  7
  • Lucas de Oliveira  · 技术社区  · 14 年前

    我目前正在进行系统迁移(从hibernate 3.2.2.GA和JPA1到hibernate3.6和JPA2)。迁移本身非常简单,没有重要的更新要做(事实上,我认为根本没有)。

    我面临的问题是hibernate在运行时抛出一个异常,抱怨@Any注释。stacktrace如下:

    Caused by: java.lang.UnsupportedOperationException: any not supported yet
        at org.hibernate.ejb.metamodel.AttributeFactory.determineAttributeMetadata(AttributeFactory.java:452)
        at org.hibernate.ejb.metamodel.AttributeFactory.buildAttribute(AttributeFactory.java:93)
        at org.hibernate.ejb.metamodel.MetadataContext.wrapUp(MetadataContext.java:183)
        at org.hibernate.ejb.metamodel.MetamodelImpl.buildMetamodel(MetamodelImpl.java:66)
        at org.hibernate.ejb.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:84)
        at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:902)
        at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:74)
        at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:225)
    

    所以这意味着hibernate不再支持@Any或@ManyToAny。这很奇怪,因为文档(从3.3到3.6)提到了如何使用@Any注释,而且AFAIK没有hibernate版本会贬低这个注释。

    我检查了hibernate 3.5的源代码,@Any注释检查也在那里,所以它也抛出了同样的异常。

    你们有办法解决这个问题吗?

    谢谢!

    2 回复  |  直到 14 年前
        1
  •  5
  •   Valters Vingolds jpkroehling    11 年前

    请尝试将此添加到Hibernate属性中:

    hibernate.ejb.metamodel.generation=disabled
    

    这将禁用元模型生成,避免出现异常。 (已编辑属性值,如注释中指出的“已禁用”)

        2
  •  1
  •   dognose    11 年前

    或者,如果不使用hibernate.properties,则添加 <property name="hibernate.ejb.metamodel.generation" value="disabled" /> 到您的persistence.xml