cb.equal(root.get("createdBy").get("id"), id)); Page entityPage = taskRepository.findAll(spec); ----------------------------------------------------- private Specification isNotDeleted() { return (root, query, cb) -> cb.isFalse(root.get("isDeleted")); }"> cb.equal(root.get("createdBy").get("id"), id)); Page entityPage = taskRepository.findAll(spec); ----------------------------------------------------- private Specification isNotDeleted() { return (root, query, cb) -> cb.isFalse(root.get("isDeleted")); }"> cb.equal(root.get("createdBy").get("id"), id)); Page entityPage = taskRepository.findAll(spec); ----------------------------------------------------- private Specification isNotDeleted() { return (root, query, cb) -> cb.isFalse(root.get("isDeleted")); }">
Specification<TasksEntity> spec = Specification.allOf(isNotDeleted());

spec = spec.and((root, query, cb) -> cb.equal(root.get("visibility"), Visibility.PUBLIC));
spec = spec.and((root, query, cb) -> cb.equal(root.get("createdBy").get("id"), id));

Page<TasksEntity> entityPage = taskRepository.findAll(spec);

-----------------------------------------------------
private Specification<TasksEntity> isNotDeleted() {
	return (root, query, cb) -> cb.isFalse(root.get("isDeleted"));
}
  • Specification : WHERE 조건을 동적 쿼리 생성
  • private Specification<TasksEntity> isNotDeleted() : 공통 조건 검색 정의
    • SELECT * FROM tasks WHERE isDeleted = false; 가 기본으로 깔리게 함
  • root : Entity 필드 접근 객체
  • query : SELECT, GROUP BY, ORDER BY 등을 설정하는 객체
  • spec.and() : 기존 조건에 AND를 추가하는 역할
  • cb.XX → SQL로 변환 시 의미
  • 사용 환경 조건
  • 사용 금지 조건