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!

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top