Go Gorm Preload without order by
2020. 5. 13. 10:17ㆍTutorial & Training/Go
728x90
GORM 을 사용할 때 특정 쿼리 First, Preload 등을 사용하면 Order by 쿼리 가 붙게되는데
다좋은데 문제가 Gorm에서 부여된 Primary key (ID)로 조회를 하는데
테이블에 ID 컬럼이 존재하지 않으면 오류가 발생합니다.
이를 해결하기 위해서는 GORM에서 언급되는
Unscoped() 라는걸 사용해야 합니다.
db.Unscoped().First(&user, 1)
Order by 절 이 없는걸 확인할 수 있는데 하지만 여기서 Preload를 사용할 경우
db.Unscoped().Preload("Profile").First(&user, 1)
Order by가 Profile 테이블에 또 붙게됩니다.
이러한 경우에는 Preload에서 함수로 또 지정해줘야합니다..
db.Unscoped().Preload("Profile", func(db *gorm.DB) *gorm.DB{
return db.Unscoped()
}).First(&user, 1)
return db.Unscoped() 영역에서 Preload에 대한 Orderby를 무시하게됩니다.
근데 Preload를 해도 딱히 Eager나 Lazy Load이런것도 안되는거같은데..
실제로 Preload나 Related를 사용해도 Join처럼 동작하는게 아니고 그냥 쿼리한번더 요청합니다...
728x90
'Tutorial & Training > Go' 카테고리의 다른 글
#01.Go - GraphQL 알아보기 (0) | 2020.05.31 |
---|---|
Go언어 ORM GORM의 크나큰 문제점 (0) | 2020.05.15 |
Go.#3 / 패키지 (0) | 2019.12.15 |
Go.#2 / Go언어 컴파일러 설치하기 (0) | 2019.12.06 |
Go.#1 / Go언어 시작하기 (0) | 2019.12.05 |