diff --git a/internal/statements/select.go b/internal/statements/select.go index 2bd2e94d..f2f4ba4e 100644 --- a/internal/statements/select.go +++ b/internal/statements/select.go @@ -98,6 +98,10 @@ func (statement *Statement) genColumnStr() string { continue } + if col.Association != nil { + continue + } + if buf.Len() != 0 { buf.WriteString(", ") } diff --git a/preload.go b/preload.go index 9185aa7c..eaf4743d 100644 --- a/preload.go +++ b/preload.go @@ -134,9 +134,14 @@ func (node *PreloadTreeNode) compute(session *Session, ownMap, pruneMap reflect. } refMap := node.association.MakeRefMap() - preloadSession := session.Engine().Cols(node.extraCols...).Where(cond) + preloadSession := session.Engine().Where(cond) if node.preload != nil { - preloadSession.Cols(node.preload.cols...).Where(node.preload.cond) + if len(node.preload.cols) > 0 { + preloadSession.Cols(node.extraCols...).Cols(node.preload.cols...) + } + preloadSession.Where(node.preload.cond) + } else { + preloadSession.Cols(node.extraCols...) } if err := preloadSession.Find(refMap.Interface()); err != nil { return err diff --git a/preload_test.go b/preload_test.go index e7d05764..ba94f2a5 100644 --- a/preload_test.go +++ b/preload_test.go @@ -124,10 +124,12 @@ insert into employee_indication values (1,2), (1,3), (2,3), (2,4), (2,5), (3,5), Subordinates: []*Employee{ { Id: 3, + Name: "Alice", ManagerId: &[]int64{1}[0], IndicatedBy: []*Employee{ { - Id: 1, + Id: 1, + Name: "John", Indications: []*Employee{ { Id: 2,