【问题标题】:Hibernate 3.5 or 3.6 with no supporting to @Any annotation?Hibernate 3.5 或 3.6 不支持 @Any 注释?
【发布时间】:2011-05-15 07:09:21
【问题描述】:

我目前正在进行系统迁移(从带有 JPA1 的 hibernate 3.2.2.GA 到带有 JPA2 的休眠 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)

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

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

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

非常感谢!

【问题讨论】:

  • 仅当您使用 JPA 接口时才支持它们。使用SessionFactory 他们可以正常工作。
  • 这很奇怪......它适用于带有 jpa1 的休眠 3.2。去搞清楚。我现在会坚持使用 3.2 =/
  • 这很清楚。 JPA2 包括元模型支持。由于不清楚如何在元模型中表示@Any 属性,因此他们必须禁止此类属性(可以从堆栈跟踪中推断出来)。
  • 你知道JPA2中@Any的相对注释是什么吗?

标签: java hibernate jpa hibernate-mapping


【解决方案1】:

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

hibernate.ejb.metamodel.generation=disabled

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

【讨论】:

  • 谢谢Partenon,我下周试试,在这里报告结果。
  • 对您的答案部分的小修改:它是“禁用”而不是“禁用”。除此之外,它确实有效。再次感谢!
【解决方案2】:

或者,如果您没有使用 hibernate.properties,请将 &lt;property name="hibernate.ejb.metamodel.generation" value="disabled" /&gt; 添加到您的 persistence.xml

【讨论】:

    猜你喜欢
    • 2011-10-04
    • 2011-02-26
    • 2019-01-27
    • 1970-01-01
    • 2011-09-13
    • 1970-01-01
    • 1970-01-01
    • 2011-11-01
    • 1970-01-01
    相关资源
    最近更新 更多