见下文。
type User struct {
Id int64 `db:"id" json:"id"`
Name string `db:"name" json:"name"`
DateCreate int64 `db:"date_create"`
DateUpdate int64 `db:"date_update"`
}
func (u *User) PreInsert(s gorp.SqlExecutor) error {
u.DateCreate = time.Now().UnixNano()
u.DateUpdate = u.DateCreate
return nil
}
func (u *User) PreUpdate(s gorp.SqlExecutor) error {
u.DateUpdate = time.Now().UnixNano()
return nil
}我执行了INSERT。
user := model.User{
Name: "John",
}
err := dbMap.Insert(&user)插入的结果。没问题
1,John,1444918337049394761,1444918337049394761继续,我执行了更新。
user := model.User{
Id: 1,
Name: "John",
}
_, err := dbMap.Update(&user)更新的结果
1,John,0,1444918337049394900已更新列DateCreate。
当然,我的期望值是
1,John,1444918337049394761,1444918337049394900发布于 2015-10-16 00:26:28
这是因为在初始化user结构时,您没有显式地设置user.DateCreate,这实际上会将其设置为0。
gorp无法猜测您想要更新哪些字段,因此它会更新所有字段。
要做你想做的事情,你必须在权衡之间做出选择。
字段已设置为good值的
select查询,失去了ORMstruct类型。这看起来很乱,我不推荐这样做。https://stackoverflow.com/questions/33152031
复制相似问题