Я попадаю в преграду с предзагрузкой и ассоциациями
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)
Предварительная загрузка выглядит как select * entities
, а затем внутреннее соединение с использованием 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 (dev). Я перепробовал множество перестановок! .. На самом деле, я думаю, я просто хочу, чтобы он делал что-то вроде
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
И залейте мне модель ..
Я что-то делаю явно не так или?