This commit is contained in:
Lunny Xiao 2016-07-09 13:57:42 +08:00
parent bd994cb726
commit 99af33e20b
1 changed files with 7 additions and 10 deletions

View File

@ -3505,11 +3505,6 @@ func (session *Session) Update(bean interface{}, condiBean ...interface{}) (int6
} }
} }
} else if isMap { } else if isMap {
// TODO: So why Table("table_name") could not be used with update map?
if session.Statement.RefTable == nil {
return 0, ErrTableNotFound
}
colNames = make([]string, 0) colNames = make([]string, 0)
args = make([]interface{}, 0) args = make([]interface{}, 0)
bValue := reflect.Indirect(reflect.ValueOf(bean)) bValue := reflect.Indirect(reflect.ValueOf(bean))
@ -3524,7 +3519,7 @@ func (session *Session) Update(bean interface{}, condiBean ...interface{}) (int6
table := session.Statement.RefTable table := session.Statement.RefTable
if session.Statement.UseAutoTime && table.Updated != "" { if session.Statement.UseAutoTime && table != nil && table.Updated != "" {
colNames = append(colNames, session.Engine.Quote(table.Updated)+" = ?") colNames = append(colNames, session.Engine.Quote(table.Updated)+" = ?")
col := table.UpdatedColumn() col := table.UpdatedColumn()
val, t := session.Engine.NowTime2(col.SQLType.Name) val, t := session.Engine.NowTime2(col.SQLType.Name)
@ -3587,7 +3582,7 @@ func (session *Session) Update(bean interface{}, condiBean ...interface{}) (int6
var inArgs []interface{} var inArgs []interface{}
doIncVer := false doIncVer := false
var verValue *reflect.Value var verValue *reflect.Value
if table.Version != "" && session.Statement.checkVersion { if table != nil && table.Version != "" && session.Statement.checkVersion {
if condition != "" { if condition != "" {
condition = fmt.Sprintf("WHERE (%v) %v %v = ?", condition, session.Engine.Dialect().AndStr(), condition = fmt.Sprintf("WHERE (%v) %v %v = ?", condition, session.Engine.Dialect().AndStr(),
session.Engine.Quote(table.Version)) session.Engine.Quote(table.Version))
@ -3656,10 +3651,12 @@ func (session *Session) Update(bean interface{}, condiBean ...interface{}) (int6
} }
} }
if table != nil {
if cacher := session.Engine.getCacher2(table); cacher != nil && session.Statement.UseCache { if cacher := session.Engine.getCacher2(table); cacher != nil && session.Statement.UseCache {
cacher.ClearIds(session.Statement.TableName()) cacher.ClearIds(session.Statement.TableName())
cacher.ClearBeans(session.Statement.TableName()) cacher.ClearBeans(session.Statement.TableName())
} }
}
// handle after update processors // handle after update processors
if session.IsAutoCommit { if session.IsAutoCommit {