7

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

我面临的问题是休眠在运行时抛出异常,抱怨@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)

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

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

对于这个问题,你们有什么解决办法吗?

多谢!

4

2 回答 2

5

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

hibernate.ejb.metamodel.generation=disabled

这应该禁用元模型生成,避免您看到的异常。(如评论中所指出的,将属性值编辑为“已禁用”)

于 2011-01-17T12:59:34.010 回答
1

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

于 2013-08-08T11:48:16.393 回答