fix conflicts between Cols and updated (#725)

This commit is contained in:
Lunny Xiao 2017-09-15 09:51:15 +08:00 committed by GitHub
parent c29485f954
commit 3101e3bc44
2 changed files with 29 additions and 10 deletions

View File

@ -202,17 +202,19 @@ func (session *Session) Update(bean interface{}, condiBean ...interface{}) (int6
table := session.statement.RefTable table := session.statement.RefTable
if session.statement.UseAutoTime && table != nil && table.Updated != "" { if session.statement.UseAutoTime && table != nil && table.Updated != "" {
colNames = append(colNames, session.engine.Quote(table.Updated)+" = ?") if _, ok := session.statement.columnMap[strings.ToLower(table.Updated)]; !ok {
col := table.UpdatedColumn() colNames = append(colNames, session.engine.Quote(table.Updated)+" = ?")
val, t := session.engine.NowTime2(col.SQLType.Name) col := table.UpdatedColumn()
args = append(args, val) val, t := session.engine.NowTime2(col.SQLType.Name)
args = append(args, val)
var colName = col.Name var colName = col.Name
if isStruct { if isStruct {
session.afterClosures = append(session.afterClosures, func(bean interface{}) { session.afterClosures = append(session.afterClosures, func(bean interface{}) {
col := table.GetColumn(colName) col := table.GetColumn(colName)
setColumnTime(bean, col, t) setColumnTime(bean, col, t)
}) })
}
} }
} }

View File

@ -1153,3 +1153,20 @@ func TestNewUpdate(t *testing.T) {
assert.NoError(t, err) assert.NoError(t, err)
assert.EqualValues(t, 0, af) assert.EqualValues(t, 0, af)
} }
func TestUpdateUpdate(t *testing.T) {
assert.NoError(t, prepareEngine())
type PublicKeyUpdate struct {
Id int64
UpdatedUnix int64 `xorm:"updated"`
}
assertSync(t, new(PublicKeyUpdate))
cnt, err := testEngine.ID(1).Cols("updated_unix").Update(&PublicKeyUpdate{
UpdatedUnix: time.Now().Unix(),
})
assert.NoError(t, err)
assert.EqualValues(t, 0, cnt)
}