database - 如何使用 Gorm 进行预加载
问题描述
我遇到了预加载和关联的障碍
type Entity struct {
ID uint `gorm:"primary_key"`
Username string
Repositories []*Repository `gorm:"many2many:entity_repositories"`
}
type Repository struct {
ID uint `gorm:"primary_key"`
Name string
Entities []*Entity `gorm:"many2many:entity_repositories"`
}
对于小用户数,使用以下预加载就可以了
db.Preload("Repositories").Find(&list)
也试过
db.Model(&User{}).Related(&Repository{}, "Repositories").Find(&list)
预加载似乎是 aselect * entities
然后使用 a 进行内部连接SELECT * FROM "repositories" INNER JOIN "entity_repositories" ON "entity_repositories"."repository_id" = "repositories"."id" WHERE ("entity_repositories"."entity_id" IN ('1','2','3','4','5','6','7','8','9','10'))
随着用户数量的增加,这不再是可维护的,因为它达到了 sqlite 限制(开发)。我已经尝试了许多排列!..实际上我想我只是想让它做类似的事情
SELECT entities.*, repositories.*
FROM entities
JOIN entity_repositories ON entity_repositories.entity_id = entities.id
JOIN repositories ON repositories.id = entity_repositories.repository_id
ORDER BY entities.id
并为我填写模型..
我是在做明显错误的事情还是?
解决方案
推荐阅读
- antlr - 这个 ANTLR 语法有什么问题?
- node.js - 节点js url映射
- r - 转换多列类
- java - 为什么这个线程代码不能在 GUI 上正常工作?[Java Swing] [线程]
- arrays - 使用 jq 替换字典中的数组值
- c# - XSL-FO 文档:在具体的 fo:table-row 中插入 break-before="page" 属性
- python-3.x - 双击不在 html 中的可视元素使 textarea 出现 selenium
- javascript - XHR 加载失败:GET Works 有时我不知道为什么
- python - R BetaExpert 函数的 Python 等效项
- vue.js - vue js事件总线调用很少的事件