반응형
entitymanager가 어디에 있습니까?
나는 가지고있다
private EntityManager em;
public List getAll(DetachedCriteria detachedCriteria) {
return detachedCriteria.getExecutableCriteria( ??? ).list();
}
entitymanager를 사용하는 경우 세션을 검색하거나 분리 한 기준에서 결과를 어떻게 얻을 수 있습니까?
철저히 완전히 정리 된 JPA 1.0 또는 JPA 2.0 구현을 사용하는 경우 상황이.
JPA 1.0
JPA 1.0에서는 . 그러나이 방법의 결과는 구현에 따라 달라집니다. 즉, Hibernate를 사용하는 응용 프로그램 서버에서 다른 서버로 이식 할 수 없습니다. 예를 들어 JBoss에서는 다음을 수행합니다.EntityManager#getDelegate()
org.hibernate.Session session = (Session) manager.getDelegate();
그러나 GlassFish 를 사용하면 다음을 수행해야합니다.
org.hibernate.Session session = ((org.hibernate.ejb.EntityManagerImpl) em.getDelegate()).getSession();
나는 끔찍한 일이라는 데 동의하며 사양하며 여기에서 비난받는 것입니다.
JPA 2.0
JPA 2.0은 새로운 응용 프로그램 보다 선호 되는 새롭고 훨씬 더 나은 방법이 있습니다 .EntityManager#unwrap(Class<T>)
EntityManager#getDelegate()
따라서 Hibernate를 JPA 2.0 구현으로 사용하면 ( 3.15. Native Hibernate API 참조) 다음을 수행합니다.
Session session = entityManager.unwrap(Session.class);
Hibernate ORM User Guide의 " 5.1. JPA에서 Hibernate API에 접근하기 " 섹션을 참조하십시오 .
Session session = entityManager.unwrap(Session.class);
이것은 더 잘 설명 될 것입니다.
EntityManager em = new JPAUtil().getEntityManager();
Session session = em.unwrap(Session.class);
Criteria c = session.createCriteria(Name.class);
저는 Wildfly에서 일하고 있었지만
org.hibernate.Session session = ((org.hibernate.ejb.EntityManagerImpl) em.getDelegate()).getSession();
그리고 정답은
org.hibernate.Session session = (Session) manager.getDelegate();
반응형
'IT' 카테고리의 다른 글
클래스 이름으로 하위 요소를 얻는 방법은 무엇입니까? (0) | 2020.08.20 |
---|---|
ASP.NET에서 Excel 파일 생성 (0) | 2020.08.20 |
Ruby에서 모든 메소드를 메소드하는 방법은 무엇입니까? (0) | 2020.08.20 |
NUnit으로 개인 방법을 어떻게 테스트합니까? (0) | 2020.08.20 |
하나의 항목을 선택하는 Linq 코드 (0) | 2020.08.20 |