2016-08-22 8 views
1

저는 최근에 릴리스 된 QBE 기능을 spring-data-jpa를 통해 사용하고 있습니다. 한 가지 예외는 @JoinTable이 주석 처리 된 필드가 작동하지 않는 것만 제외하면 모든 것이 올바르게 작동하는 것 같습니다. 엔터티 및 @JoinColumn 관계에 대한 간단한 프리미티브를 시도했으며 쿼리가 예상대로 수행됩니다. 그러나 @JoinTable 관계의 개체 집합을 채우려고하면 해당 데이터가 내 쿼리의 일부가되지 않습니다. 로그 된 SQL을 확인했습니다. JPA 프로 바이더로서 Hibernate를 사용하고 있기 때문에 문제는 구현과 관련이 있습니다. 나는 지금 내가 뭔가 잘못하고 있다고 가정하려고한다.JPA QBE with @JoinTable

@ManyToMany 
@JoinTable(name = "join_table", joinColumns = @JoinColumn(name = "userid", nullable = false), inverseJoinColumns = @JoinColumn(name = "groupid", nullable = false)) 
private Set<Group> groups= new HashSet<>(0); 

그게 작동하지 않는 주석 필드입니다. QBE로 채우기 위해 원하는 특정 이름으로 새 그룹을 만들면됩니다. 나는 그 그룹에 속해서 돌아 오기 위해서 사용자를 필요로한다. 그러나 생성 된 SQL은 where 절에 그룹에 대한 내용을 포함하지 않습니다.

return userRepo.findAll(example, pageable);

Example<User> example = Example.of(user);

그리고 JPA 저장소를 호출하는 코드 조각.

모든 아이디어는 크게 감사하겠습니다.

답변

2

현재 스프링 데이터 JPA의 QBE 기능은 SingularAttribute만을 지원합니다. 그러므로 @JoinTable은 사용할 수 없습니다. 참조 설명서에서 "Executing an Example" section을보십시오.

+0

답장을 보내 주셔서 감사합니다. 내 쿼리의 일부로 PluralAttribute가 필요한 경우이를 수행하기 위해 QBE를 다른 것과 결합하는 방법이 있습니까? 아니면 지원이 추가 될 때까지 QBE를 사용하지 않아도됩니까? –

+0

[ExampleSpecification] (https://github.com/spring-projects/spring-data-jpa/blob/master/src/main/java/org/)에서와 같이'Specification'을 직접 만들 수 있습니다. springframework/data/jpa/repository/support/SimpleJpaRepository.java # L806), 필요한 경로를 추가 한 다음 'JpaSpecificationExecutor'에 전달하십시오. –