2015년 11월 19일 목요일

Criteria Query String 보기

JPA를 사용하다 CriteriaQuery의 실제 query string을 보아야하는 경우가 있다.
아래는 각 JPA마다의 실제 query string을 보는 메서드이다.

Query 생성

CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery q = cb.createQuery(Book.class);
Root b = q.from(Book.class);
q.select(b).orderBy(cb.desc(b.get("id")));
TypedQuery findAllBooks = em.createQuery(q);

EclipseLink


findAllBooks.unwrap(JpaQuery.class).getDatabaseQuery().getJPQLString(); // doesn't work for CriteriaQuery
findAllBooks.unwrap(JpaQuery.class).getDatabaseQuery().getSQLString();

Hibernate

findAllBooks.unwrap(org.hibernate.Query.class).getQueryString()

OpenJPA

findAllBooks.unwrap(org.apache.openjpa.persistence.QueryImpl.class).getQueryString()

Unit testing

assertEquals("SELECT b FROM Book b ORDER BY b.id DESC", findAllBooksCriteriaQuery.unwrap(org.apache.openjpa.persistence.QueryImpl.class).getQueryString());

원본 출처 : antoniogoncalves.org/2012/05/24/how-to-get-the-jpqlsql-string-from-a-criteriaquery-in-jpa/

댓글 없음 :

댓글 쓰기