2010-11-20 5 views
4

JPA에서 최대 절전 모드 QBE (예제로 쿼리)을 구현하는 방법을 알고 계십니까?JPA에서 예제로 기능 구현하기

내 문제는 도메인을 사용하는 대신 동적으로 일종의 문자열 조작을 사용하여 SQL 쿼리를 작성하는 것입니다.

이 API는 기본적으로 API에서 지원되지 않지만 동적 쿼리를 작성하는 데 유용한 기술임을 알고 있습니다.

제안 사항?

답변

8

JPA 2.0에서 가장 비슷한 것을 Criteria API이라고합니다. JPA 1.0에는 존재하지 않았습니다. 여기

는 샘플입니다

CriteriaBuilder cb = em.getCriteriaBuilder(); 
CriteriaQuery c = cb.createQuery(Person.class); 
Root person = c.from(Person.class); 
c.select(person) 
    .where(cb.equal(person.get("name"), "Officer Friendly")); 
+0

예를 들어 주셔서 감사합니다. JPA 2.0이 아니라 1.0을 사용하고 있습니다. –

+2

FindByExample의 주요 장점 중 하나는 의존하는 쿼리를 깨뜨리지 않아도 엔티티를 리팩토링 할 수 있다는 것입니다. FindByExample. 이 예제에서 Person "name"이 "firstName"과 "lastName"으로 분리하여 리팩터링되면 쿼리가 손상된다는 것을 알 수 있습니다. –

9

QBE는 JPA 1.0 또는 2.0에서 사용할 수 없습니다. 자세한 내용은 here

+1

나는 이것이 정답이다하지만 불행히도 그것은 바로 하나를 선택하기 위해 OP의 손에 생각합니다. 나는 너의 것을지지했다. –

0

내가 그 무형 문화 유산에 스크래치했고, 내가 그것을 자신을하기로 결정 오래 전.

당신은 소스 포지에서 그것을 얻을 수 있습니다 SVN : //svn.code.sf.net/p/jpaco/code/ jpaco 코드

1

내가 잠시 뒤이 같은 문제에 직면했다.

JPA Criteria API를 사용하는 것이 약간 번거롭고 그 위에 추상화를하기로 결정했습니다.

https://github.com/kenglxn/QueryByExample이 희망은이 같은 문제를 가진 다른 사람을 위해 유용 할 수 있습니다 :

이 작고, 유연하고 간단한 라이브러리입니다.

테스트 케이스는 몇 가지 실용적인 예제가 있습니다 https://github.com/kenglxn/QueryByExample/blob/master/src/test/java/net/glxn/qbe/QBETest.java

+0

컬렉션 속성이있는 엔터티도 지원됩니까? 더 깊은 그래프가있는 속성은 어떻습니까? –

+0

현재 github에 문제를 게시 할 수는 없습니다. – kenglxn

관련 문제