gen icon indicating copy to clipboard operation
gen copied to clipboard

`updated_at` not touched when generating a query via property obtained from `Query` in transaction of `ReadDB()` / `WriteDB()` when using gorm.io/gen

Open mika-f opened this issue 1 year ago • 0 comments

GORM Playground Link

https://github.com/go-gorm/playground/pull/785

Description

Using gorm.io/[email protected], gorm.io/[email protected], updated_at not touched in generated query when build via property obtained from Query in transaction of ReadDB() / WriteDB():

// expected behavior
query.WriteDB().Transaction(func(tx *q.Query) error {
	user := tx.User
        // UPDATE `users` SET `name`=?,`updated_at`=? WHERE `users`.`name` = ? AND `users`.`deleted_at` IS NULL
	user.WithContext(ctx).Where(user.Name.Eq(name)).UpdateSimple(user.Name.Value("test2"))
	return nil
})

// actual behavior
query.WriteDB().Transaction(func(tx *q.Query) error {
	user := tx.User
	// UPDATE `users` SET `name`=? WHERE `users`.`name` = ? AND `users`.`deleted_at` IS NULL
	user.WithContext(ctx).Where(user.Name.Eq(name)).UpdateSimple(user.Name.Value("test2"))
	return nil
})

When using without ReadDB() / WriteDB(), gorm generates expected SQL:

query.Transaction(func(tx *q.Query) error {
	user := tx.User
	// UPDATE `users` SET `name`=?,`updated_at`=? WHERE `users`.`name` = ? AND `users`.`deleted_at` IS NULL
	user.WithContext(ctx).Where(user.Name.Eq(name)).UpdateSimple(user.Name.Value("test2"))
	return nil
})

mika-f avatar Jan 24 '25 10:01 mika-f