Hibernate 3.5 ou 3.6 sem suporte para @any anotação?
-
28-09-2019 - |
Pergunta
Atualmente, estou trabalhando em uma migração do sistema (do Hibernate 3.2.2.Ga com JPA1 para Hibernate 3.6 com JPA2. A migração em si é muito simples, não há grandes atualizações a fazer (na verdade, não acho que exista qualquer um).
O problema que estou enfrentando é que o Hibernate lança uma exceção no tempo de execução, reclamando das anotações @Any. O Stacktrace é o seguinte:
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)
Então, isso significa que @any ou @manytoany não são mais suportados pelo Hibernate. Isso é estranho, porque a documentação (de 3,3 a 3.6) menciona como usar a anotação @any e o AFAIK, não há uma versão de hibernato que deprecie essa anotação.
Eu verifiquei o código -fonte do Hibernate 3.5 e a verificação da anotação @Any também está lá, por isso também lança a mesma exceção.
Vocês têm alguma solução alternativa para esse problema?
Muito obrigado!
Solução
Você tentaria adicionar isso às suas propriedades de hibernação:
hibernate.ejb.metamodel.generation=disabled
Isso deve desativar a geração de metamodelo, evitando a exceção que você está vendo. (Valor da propriedade editada para dizer 'desativado', conforme apontado nos comentários)
Outras dicas
Ou, se você não estiver usando o hibernate.properties, adicione <property name="hibernate.ejb.metamodel.generation" value="disabled" />
para sua persistência.xml