diff --git a/cache_test.go b/cache_test.go index f106234b..5f138f24 100644 --- a/cache_test.go +++ b/cache_test.go @@ -59,6 +59,30 @@ func TestCacheFind(t *testing.T) { assert.Equal(t, inserts[i].Password, box.Password) } + boxes = make([]MailBox, 0, 2) + assert.NoError(t, testEngine.Alias("a").Where("a.id > -1").Asc("a.id").Find(&boxes)) + assert.EqualValues(t, 2, len(boxes)) + for i, box := range boxes { + assert.Equal(t, inserts[i].Id, box.Id) + assert.Equal(t, inserts[i].Username, box.Username) + assert.Equal(t, inserts[i].Password, box.Password) + } + + type MailBox4 struct { + Id int64 + Username string + Password string + } + + boxes2 := make([]MailBox4, 0, 2) + assert.NoError(t, testEngine.Table("mail_box").Where("mail_box.id > -1").Asc("mail_box.id").Find(&boxes2)) + assert.EqualValues(t, 2, len(boxes2)) + for i, box := range boxes2 { + assert.Equal(t, inserts[i].Id, box.Id) + assert.Equal(t, inserts[i].Username, box.Username) + assert.Equal(t, inserts[i].Password, box.Password) + } + testEngine.SetDefaultCacher(oldCacher) } diff --git a/session_find.go b/session_find.go index 191695a7..05ec724f 100644 --- a/session_find.go +++ b/session_find.go @@ -348,7 +348,7 @@ func (session *Session) cacheFind(t reflect.Type, sqlStr string, rowsSlicePtr in return err } bean := cacher.GetBean(tableName, sid) - if bean == nil { + if bean == nil || reflect.ValueOf(bean).Elem().Type() != t { ides = append(ides, id) ididxes[sid] = idx } else { @@ -389,7 +389,7 @@ func (session *Session) cacheFind(t reflect.Type, sqlStr string, rowsSlicePtr in } } - err = session.NoCache().find(beans) + err = session.NoCache().Table(tableName).find(beans) if err != nil { return err }