QueryDSL 관련해서 질문드립니다.

미해결질문
d_d 프로필

안녕하세요. 강의를 듣던 중 테스트가 실패해야하는데 정상적으로 실행이 되어 질문드립니다.

25.스프링 데이터 Common: QueryDSL 에 관련된 질문입니다.

저와 같은 질문을 하신 분이 있던데(https://www.inflearn.com/questions/9020)  버전 변경으로 인해QuerydslJpaRepository 이 deprecated 되며 SimpleJpaRepository 를 변경하지 않고 사용할 repository 에  QuerydslPredicateExecutor 을 상속받아서 사용해도 되는지 문의드립니다.

하단에 코드 함께 첨부하였습니다.

@EnableJpaRepositories(repositoryBaseClass = SimpleMyRepository.class)

@NoRepositoryBean 

public interface MyRepository<T, ID extends Serializable> extends JpaRepository<T, ID> {

boolean contains(T entity);

}

public class SimpleMyRepository<T, ID extends Serializable> extends SimpleJpaRepository<T, ID> implements MyRepository<T, ID>{

 

private EntityManager entityManager;

private SimpleMyRepository(JpaEntityInformation<T, ?> entityInformation, EntityManager entityManager) {

super(entityInformation, entityManager);

this.entityManager = entityManager;

}

 

@Override

public boolean contains(T entity) {

return entityManager.contains(entity);

}

}

public interface PostRepository extends MyRepository<Post, Long>, QuerydslPredicateExecutor<Post> {

}

@Test

public void crud() {

Post post = new Post();

post.setTitle("hibernate!");

postRepository.save(post.publish());

Predicate predicate = QPost.post.title.contains("hi");

Optional<Post> one = postRepository.findOne(predicate);

assertThat(one).isNotEmpty();

}

백기선 프로필
백기선 3달 전

네 이렇게 하셔도 됩니다. 스프링 데이터 JPA 버전이 올라가면서 바뀐거 같아요.

지식공유자 되기
많은 사람들에게 배움의 기회를 주고,
경제적 보상을 받아보세요.
지식공유참여
기업 교육을 위한 인프런
“인프런 비즈니스” 를 통해 모든 팀원이 인프런의 강의들을
자유롭게 학습하는 환경을 제공하세요.
인프런 비즈니스