2016-09-08 2 views
0

나는 스프링 JPA를 구현하고 검색 조건에 대한 질의 DSL을 사용했습니다 ... 스프링 문서에 주어진 몇 가지 변화가 잘 작동 ..스프링 JPA 쿼리 DSL 나던 작업

내 나머지 컨트롤러 방법은 주어진으로 아래

@RequestMapping(value = "/testdsl", method = RequestMethod.GET) 
Iterable<User> index(
@QuerydslPredicate(root = User.class) Predicate predicate) 
{ 
    return userRepository.findAll(predicate); 
} 

및 리포 지 토리는 아래와 같습니다. 주석 처리 된 방법을 사용하면 예상되는 객체를 멋지게 전달할 수 있습니다.

public interface UserRepository extends CrudRepository<User, Integer>, 
QueryDslPredicateExecutor<User>, QuerydslBinderCustomizer<QUser> 
{ 
    //Collection<OnlyName> findAllProjectedBy(); 
    //OnlyName findProjectedById(Integer id); 

@Override 
default public void customize(QuerydslBindings bindings, QUser root) 
{ 

    bindings.bind(String.class) 
    .first((StringPath path, String value) -> path.containsIgnoreCase(value)); 
} 
} 

그리고는 내가

public interface IUserProjection { 
//...all required getters.. 
} 

지금 난 내 쿼리 DSL이 투영 된 개체를 반환하는 내가 응답으로 retured되는 전체 엔티티 클래스의 부분 집합 어디서 구현이 투영 .. 원하는 한 우리는 이러한 조합의 샘플을해야합니까 ... 난 ... 당신은 그렇게 할 수 있지만 구체적인 클래스가 필요합니다 봄 부팅 1.4.0.RELEASE

답변

0

을 사용하고

다음 쿼리 (QueryDSL 3)과 같습니다

query.from(QTenant.tenant).list(new QUserProjection(QTenant.tenant.id, QTenant.tenant.name)); 

편집 :

쿼리 같을 것이다 queryDSL 4 :

List<UserProjection> dtos = query.select(new QUserProjection(QTenant.tenant.id, QTenant.tenant.name)) 
           .from(tenant).fetch(); 
+0

내가 사용했던 봄 쿼리 dsl (질문이 편집 됨) .. 그리고 이것들은 약간 다르며 QTenant는 무엇입니까 – surya

+0

자동 생성 된 Q 클래스에서는 사용하지 않았습니까? 그들은 문자열 리터럴을 사용하지 않는데 사용할 수있는 타입 안전 자동 생성 클래스입니다. – Ulises

+0

엔티티 용으로 자동 생성 된 것을 사용합니다. QUossProjection은 어떻습니까? 그것을 생성해야합니까, 당신은이 qprojection 클래스의 샘플을 가지고 있습니까? – surya