Кажется, я понял, почему.Пожалуйста, исправьте меня, если я ошибаюсь.
Например, когда я делаю db.Create(&product)
,
(1) GORM загрузит значения полей, которые он не знает, из базы данныхк переменной product
.
(2) Причина, по которой он выбирает только три поля, состоит в том, что я не предоставляю эти значения в исходной переменной product
, а GORM не знает, что это за значениябудет, таким образом, выберите эти поля и затем присвойте их product
.Например, num
- это последовательный номер с автоинкрементом.
(3) Если я предоставлю значения всех полей для product
до создания строки, GORM не будет вызывать select
после insert
.
Кстати, GORMне очень умен в этом, потому что my_text
имеет значение по умолчанию в определении, например
MyText string `gorm:"default:'abc'"`
Таким образом, даже если я не укажу поле, GORM должен знать, что такое значение my_text
инет необходимости выбирать его больше.Но как бы то ни было, это может быть именно так, как сейчас разрабатывает GORM