go - GORM 协会未更新
问题描述
使用以下代码
package main
import (
"fmt"
"gorm.io/driver/sqlite"
"gorm.io/gorm"
)
type Person struct {
gorm.Model
FirstName string `json:"firstname"`
LastName string `json:"lastname"`
Addresses []PersonAddressLines `gorm:"many2many:person_addresses;" json:"addresses"`
}
type PersonAddressLines struct {
gorm.Model
AddressLine1 string `json:"address_line1"`
AddressLine2 string `json:"address_line2"`
AddressLine3 string `json:"address_line3"`
}
func main() {
db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{})
if err != nil {
panic("failed to connect database")
}
db.Migrator().DropTable("people")
db.Migrator().DropTable("person_addresses")
db.Migrator().DropTable("person_address_lines")
// Migrate the schema
err = db.AutoMigrate(&PersonAddressLines{}, &Person{})
if err != nil {
panic("Cannot migrate")
}
fmt.Println(">> Create Person")
// Create
var OriginalPerson = &Person{FirstName: "Sample", LastName: "Person", Addresses: []PersonAddressLines{
{AddressLine1: "1 Some Street", AddressLine2: "Somewhere"},
}}
fmt.Println(">> Reload Person")
db.Debug().Create(&OriginalPerson)
// Load the person again and update
var person Person
db.Preload("Addresses").First(&person, 1) //get the first person..
person.Addresses[0].AddressLine2 = "CHANGED!!!"
fmt.Println(">> Update with New Address")
db.Debug().Save(&person)
fmt.Println (">> New value " + person.Addresses[0].AddressLine2)
// Reload from database is it changed??
fmt.Println(">> Reloading Person again...")
var newPerson Person
db.Preload("Addresses").First(&newPerson, 1) //get the first person..
fmt.Println("Changed Person Value: Expect 'CHANGED!!!' == " + person.Addresses[0].AddressLine2)
fmt.Println("New Person Value: Expect 'CHANGED!!!' == " + newPerson.Addresses[0].AddressLine2)
}
更改为
person.Addresses[0].AddressLine2 = "CHANGED!!!"
未在数据库中更新。这是一个错误还是我做错了什么?
我对 postgres 也有同样的问题。
解决方案
推荐阅读
- swift - 更新我的 pods 文件后构建运行问题
- python - 无法修复此错误:ValueError:数据基数不明确
- python - 如何更改标签的文本而不重叠?
- python - 如何从 '\xa0·\xa0' 和 '\xa0·\xa022h' 或类似形式的列表元素中删除?
- common-lisp - 在多值绑定中跳过值
- environment-variables - 如何将非 JSON 响应存储到 Postman 环境变量中
- python - 我的 Python 代码中的这条 SQL 语句有什么问题?
- python - 当表有外键时如何在 SQLAlchemy 中添加值
- node.js - 在大对象数组中搜索单词的快速方法| 节点
- javascript - Vuejs | 无法访问组件中的查询参数