[SPRING] Spring 데이터 MongoDB 저장소 - JPA 스펙
SPRINGSpring 데이터 MongoDB 저장소 - JPA 스펙
스프링 데이터 MongoDB 저장소를위한 JPA 스펙과 같은 것이 있습니까?
그렇지 않은 경우 리포지토리를 사용하여 동적 쿼리를 만들려면 어떻게해야합니까?
클래식 시나리오는 사용자가 채울 선택적 필드가있는 검색 양식이 될 수 있습니다.
해결법
-
==============================
1.나는 나 자신을 발견했다.
나는 나 자신을 발견했다.
트릭은 다음과 같은 방법으로 QueryDSL을 사용하여 수행 할 수 있습니다.
먼저 QueryDSL 종속성을 추가하십시오.
<dependency> <groupId>com.mysema.querydsl</groupId> <artifactId>querydsl-mongodb</artifactId> <version>${querydsl-mongo.version}</version> </dependency> <dependency> <groupId>com.mysema.querydsl</groupId> <artifactId>querydsl-apt</artifactId> <version>${querydsl-mongo.version}</version> </dependency>
그런 다음 Metamodels 클래스를 만들려면 플러그인을 구성하십시오 (이름은 접두어로 Q 문자가있는 문서와 동일합니다 : 예 : QUser).
<build> <plugins> .... <plugin> <groupId>com.mysema.maven</groupId> <artifactId>apt-maven-plugin</artifactId> <version>1.1.3</version> <executions> <execution> <goals> <goal>process</goal> </goals> <configuration> <outputDirectory>target/generated-sources/java</outputDirectory> <processor>org.springframework.data.mongodb.repository.support.MongoAnnotationProcessor</processor> </configuration> </execution> </executions> </plugin> </plugins> </build>
프로세서 클래스에 주목하십시오 : QueryDSL 디폴트 코드는 com.mysema.query.apt.morphia.MorphiaAnnotationProcessor가 아니라 Spring 데이터 MongoDB 중 하나입니다 org.springframework.data.mongodb.repository.support.MongoAnnotationProcessor :
이제 저장소 인터페이스를 QueryDslPredicateExecutor
로 확장 할 수 있습니다. public interface UserRepository extends MongoRepository<User, String>, QueryDslPredicateExecutor<User>, QuerydslBinderCustomizer<QUser> { }
이제 저장소를 질의 할 때 술어를 정의 할 수 있습니다.
QUser user = QUser.user; BooleanExpression predicate = user.name.containsIgnoreCase("John"); userRepository.findAll(predicate);
QuerydslBinderCustomizer는 문서 속성의 바인딩을 정의하는 데 도움을줍니다 (추가 도움말은 Spring 설명서 참조).
-
==============================
2.다음 시점에 업데이트됩니다 :
다음 시점에 업데이트됩니다 :
<spring.version>4.3.4.RELEASE</spring.version> <querydsl.version>4.1.3</querydsl.version> <spring.data.mongodb.version>1.9.5</spring.data.mongodb.version>
용도
... <plugin> <groupId>com.mysema.maven</groupId> <artifactId>apt-maven-plugin</artifactId> <version>1.1.3</version> <executions> <execution> <goals> <goal>process</goal> </goals> <configuration> <outputDirectory>target/generated-sources/java</outputDirectory> <processor>org.springframework.data.mongodb.repository.support.MongoAnnotationProcessor</processor> </configuration> </execution> </executions> </plugin> ... <dependency> <groupId>com.querydsl</groupId> <artifactId>querydsl-mongodb</artifactId> <version>${querydsl.version}</version> </dependency> <dependency> <groupId>com.querydsl</groupId> <artifactId>querydsl-apt</artifactId> <version>${querydsl.version}</version> </dependency>
from https://stackoverflow.com/questions/33735797/spring-data-mongodb-repository-jpa-specifications-like by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] @Async가 나를 위해 작동하지 않습니다. (0) | 2019.02.25 |
---|---|
[SPRING] 봄 부팅에서 ProblemHandler를 ObjectMapper로 설정할 수 없음 (0) | 2019.02.25 |
[SPRING] 추상 클래스에 정의 된 스프링 autowire 의존성 (0) | 2019.02.25 |
[SPRING] Spring 3.0.5 - java.awt.HeadlessException - com.trend.iwss.jscan (0) | 2019.02.25 |
[SPRING] Spring Social 3.0.0.M1의 org.springframework.social.connect.ConnectionRepository 클래스는 어떻게 되었습니까? (0) | 2019.02.25 |