Hibernate 3.5或3.6不支持@Any注释?

时间:2010-11-24 18:48:18

标签: java hibernate jpa hibernate-mapping

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

我遇到的问题是hibernate在运行时抛出异常,抱怨@Any注释。堆栈跟踪如下:

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 个答案:

答案 0 :(得分:5)

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

hibernate.ejb.metamodel.generation=disabled

这应该禁用元模型生成,避免您看到的异常。 (编辑的属性值表示评论中指出的'禁用')

答案 1 :(得分:1)

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