Obtendo o HibernateEntityManager a partir do EntityManager da JPA


As vezes quando trabalhamos somente com a interface da JPA, algumas funcionalidades da Criteria Query, não trabalham como queremos, por isso precisamos acessar à implementação da JPA, no meu caso eu precisei acessar o hibernate.

Como eu tinha acesso somente ao EntityManager da JPA, seria preciso conseguir o HibernateEntityManager, para isso basta adicionar o seguinte codigo:


HibernateEntityManager hem = entityManager.unwrap(HibernateEntityManager.class);
Session session = hem.getSession();

O metodo unwrap do entityManager, existe justamente para esse feito, para que possamos acessar a implementação do provider.

Comments

  1. Legal!!!
    Eu precisava disso, não queria me "casar" com o Hibernate deixando de usar o EntityManager e passar a usar o Session (me amarrar ao framework), porém o Criteria do Hibernate é muito "evoluído" e não sabia um meio de utilizá-lo com o EntityManager da JPA.
    Valeu cara.
    Bom trabalho, abraço.

    ReplyDelete
    Replies
    1. Fala Leandro,
      Então, eu tive esse mesmo problema, alguns comportamentos que eu precisava fazer, a Criteria Query da JPA não suportava, por isso precisei fazer com o Hibernate.
      Mas de qualquer maneira, fico feliz que foi util!!
      Agradeço o comentario.

      Abraço

      Delete

Post a Comment

Popular posts from this blog

Tela preta no Backtrack 5 ao executar o startx

Maven Error assembling EJB: META-INF/ejb-jar.xml is required for ejbVersion 2.x

Static Metamodel