From 3dad119dd66bd7d72ddc954463b99330d5fd6f19 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Sat, 9 Sep 2017 13:48:14 +0800 Subject: [PATCH] fix bug on cache specify table name (#710) --- cache_test.go | 24 ++++++++++++++++++++++++ session_find.go | 4 ++-- 2 files changed, 26 insertions(+), 2 deletions(-) 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 }