메인 카테고리와 서브카테고리를 조인 한다 조건은 main_category_id와 sub_category_id 같은것 끼리
SELECT * FROM main_category LEFT JOIN sub_category ON main_category.main_category_id = sub_category.main_category_id;
메인 카테고리와 서브카테고리를 조인 한다 조건은 main_category_id와 sub_category_id 같은것 끼리
SELECT main_category.main_category_id,main_category.name,sub_category.sub_category_id,sub_category.name FROM main_category LEFT JOIN sub_category ON main_category.main_category_id = sub_category.main_category_id
컬럼 이름 오른쪽에서 AS {컬럼이름} 을 통해 변경해서 출력한다.
SELECT main_category.main_category_id,main_category.name AS mainCategoryName ,sub_category.sub_category_id,sub_category.name As subCategoryName FROM main_category LEFT JOIN sub_category ON main_category.main_category_id = sub_category.main_category_id
MainCategory 와 SubCategory는 OneToMany 1:N 관계의 테이블이다.
@ManyToOne
@JoinColumn(name = "main_category_ID")
private MainCategory mainCategory;
SubCategoryTable의 main_category_ID는 MainCategoryTable의 ID(pk)와 관계되어있으므로
위와 같이 어노테이션을 지정해준다.
@Override
public List<SubCategoryResponseDTO> getAllSubCategory(long mainCategoryId) {
List<SubCategoryResponseDTO> result = new ArrayList<>();
List<SubCategory> categories = subCategoryRepository.findByMainCategoryId(mainCategoryId);
for (SubCategory v : categories) {
SubCategoryResponseDTO dto = new SubCategoryResponseDTO();
result.add(dto.fromEntity(v));
}
if (result.isEmpty()) {
throw new IllegalStateException("Empty");
} else {
return result;
}
}
path 로 받은 mainCategoryId를 찾아서 반환을 하면