fix bug on cache specify table name (#710)

This commit is contained in:
Lunny Xiao 2017-09-09 13:48:14 +08:00 committed by GitHub
parent 265dd66928
commit 3dad119dd6
2 changed files with 26 additions and 2 deletions

View File

@ -59,6 +59,30 @@ func TestCacheFind(t *testing.T) {
assert.Equal(t, inserts[i].Password, box.Password) 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) testEngine.SetDefaultCacher(oldCacher)
} }

View File

@ -348,7 +348,7 @@ func (session *Session) cacheFind(t reflect.Type, sqlStr string, rowsSlicePtr in
return err return err
} }
bean := cacher.GetBean(tableName, sid) bean := cacher.GetBean(tableName, sid)
if bean == nil { if bean == nil || reflect.ValueOf(bean).Elem().Type() != t {
ides = append(ides, id) ides = append(ides, id)
ididxes[sid] = idx ididxes[sid] = idx
} else { } 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 { if err != nil {
return err return err
} }