2010-11-24 94 views
7

我目前正在进行系统迁移(从JPA1的hibernate 3.2.2.GA到JPA2的hibernate 3.6,迁移本身非常简单,没有大的更新要做(事实上,我不认为。有任何的话)Hibernate 3.5或3.6不支持@Any注释?

我现在面临的问题是,休眠抛出运行时异常,抱怨@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不再被hibernate支持,这很奇怪,因为文档(从3.3到3.6)提到了如何使用@Any注释和AFAIK,没有hibernate版本贬低这个annot通货膨胀。

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

你们有没有针对这个问题的解决方法?

非常感谢!

+1

只有在使用JPA他们不支持接口。通过`SessionFactory`,它们工作正常。 – axtavt 2010-11-24 19:18:29

+0

这很奇怪......它使用jpa1在hibernate 3.2上工作。去搞清楚。我会坚持3.2现在=/ – 2010-11-24 19:35:05

回答

5

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

hibernate.ejb.metamodel.generation=disabled 

这应该禁用元模型的生成,避免了您所看到的例外。 (编辑属性值说“禁用”在评论中指出)

1

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