我目前正在进行系统迁移(从带有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注释检查,所以它也会抛出同样的异常。
你们有没有解决这个问题的方法?
非常感谢!
答案 0 :(得分:5)
请您尝试将此添加到您的Hibernate属性中:
hibernate.ejb.metamodel.generation=disabled
这应该禁用元模型生成,避免您看到的异常。 (编辑的属性值表示评论中指出的'禁用')
答案 1 :(得分:1)
或者,如果您不使用hibernate.properties,请将<property name="hibernate.ejb.metamodel.generation" value="disabled" />
添加到persistence.xml