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.
Legal!!!
ReplyDeleteEu 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.
Fala Leandro,
DeleteEntã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