Hibernate 3.5 или 3.6 без поддержки аннотации @Any? - PullRequest
7 голосов
/ 24 ноября 2010

В настоящее время я работаю над миграцией системы (с hibernate 3.2.2.GA с JPA1 на hibernate 3.6 с JPA2. Сама миграция очень проста, крупных обновлений делать не нужно (на самом деле я не думаю, что есть вообще).

Проблема, с которой я сталкиваюсь, заключается в том, что 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 больше не поддерживаются hibernate. Это странно, потому что в документации (от 3.3 до 3.6) упоминается, как использовать аннотацию @Any, а в AFAIK нет спящей версии, которая не поддерживает эту аннотацию.

Я проверил исходный код hibernate 3.5, и здесь также есть проверка аннотации @Any, поэтому она также выдает то же исключение.

У вас, ребята, есть обходной путь для этой проблемы?

Большое спасибо!

Ответы [ 2 ]

5 голосов
/ 17 января 2011

Пожалуйста, попробуйте добавить это в свои свойства Hibernate:

hibernate.ejb.metamodel.generation=disabled

Это должно отключить генерацию метамодели, избегая исключений, которые вы видите.(Отредактировано значение свойства, чтобы сказать «отключено», как указано в комментариях)

1 голос
/ 08 августа 2013

Или, если вы не используете hibernate.properties, добавьте <property name="hibernate.ejb.metamodel.generation" value="disabled" /> в ваш файл persistence.xml

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...