Project/Management

[Management] DB Error : ORDER BY clause is not in SELECT list

lakelight 2022. 10. 14. 10:29
728x90
반응형
전체 에러 내용
2022-10-13 07:29:13.707 WARN 20835 --- [nio-9080-exec-8] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 3065, SQLState: HY000 2022-10-13 07:29:13.707 ERROR 20835 --- [nio-9080-exec-8] o.h.engine.jdbc.spi.SqlExceptionHelper : Expression #1 of ORDER BY clause is not in SELECT list, references column 'mesdb.warehousin1_.created_date' which is not in SELECT list; this is incompatible with DISTINCT

 해당 오류는 Select 문에 없는 칼럼을 Order문에서 사용하게 되면 발생하는 오류라고 합니다. 

 

해결방법

저는 Select 문에 있는 속성으로 OrderBy를 변경하는 방법을 사용했습니다.

기존코드

//1이상의 원자재를 조회하는 기능
public List<RawMaterialDetail> readRawMaterialByItemIdOne(Long id){
    return queryFactory
            .selectFrom(rawMaterialDetail)
            .where(rawMaterialDetail.item.id.eq(id).and(rawMaterialDetail.count.goe(1)))
            .orderBy(rawMaterialDetail.warehousing.createdDate.asc())
            .fetch();
}

 

변경코드

//1이상의 원자재를 조회하는 기능
public List<RawMaterialDetail> readRawMaterialByItemIdOne(Long id){
    return queryFactory
            .selectFrom(rawMaterialDetail)
            .where(rawMaterialDetail.item.id.eq(id).and(rawMaterialDetail.count.goe(1)))
            .orderBy(rawMaterialDetail.createdDate.asc())
            .fetch();
}
orderBy 부분에서 rawMaterialDetail 내부에 있는 warehousing을 정렬하지 않고,
rawMaterialDetail이 생성되는 시점을 통해 정렬하였습니다.

 

다른 방법

저와 다른 경우 꼭 써야하는 분들은 아래 링크를 참고하시면 해결된다고 합니다.

MySQL 5.7.x 에서 ORDER BY clause is not in SELECT list 오류 발생 시.

 

[참고]

1. order by Error

728x90
반응형