From 81e690f8a84066e543d3b25544fb919cd12941eb Mon Sep 17 00:00:00 2001 From: Nash Tsai Date: Fri, 11 Apr 2014 21:31:44 +0800 Subject: [PATCH] resolved merge from b1dfd648f25bc8048b36a8c6269e8b84d3bad940 --- session.go | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/session.go b/session.go index b8035acc..a6c6e54f 100644 --- a/session.go +++ b/session.go @@ -2910,6 +2910,8 @@ func (session *Session) Update(bean interface{}, condiBean ...interface{}) (int6 var sqlStr, inSql string var inArgs []interface{} + doIncVer := false + var verValue *reflect.Value if table.Version != "" && session.Statement.checkVersion { if condition != "" { condition = fmt.Sprintf("WHERE (%v) AND %v = ?", condition, @@ -2932,7 +2934,13 @@ func (session *Session) Update(bean interface{}, condiBean ...interface{}) (int6 session.Engine.Quote(table.Version)+" = "+session.Engine.Quote(table.Version)+" + 1", condition) - condiArgs = append(condiArgs, table.VersionColumn().ValueOf(bean).Interface()) + verValue, err = table.VersionColumn().ValueOf(bean) + if err != nil { + return 0, err + } + + condiArgs = append(condiArgs, verValue.Interface()) + doIncVer = true } else { if condition != "" { condition = "WHERE " + condition @@ -2959,6 +2967,8 @@ func (session *Session) Update(bean interface{}, condiBean ...interface{}) (int6 res, err := session.exec(sqlStr, args...) if err != nil { return 0, err + } else if doIncVer { + verValue.SetInt(verValue.Int() + 1) } if table.Cacher != nil && session.Statement.UseCache {