我们如何在GORM中的多对多关系中进行批量插入?
假设我们有以下情景
class Article{
static hasMany = [readers:User]
...
}
class User{
static hasMany = [articles:Article]
...
}
这些映射实际上会创建三个表,Article,User_Article(包含多对多数据映射)和User。根据GORM文档,添加阅读器的文章应该由
完成article.addToReaders(user)
问题是,当我们要将所有现有用户作为文章的读者插入时,我们应该遍历所有用户,然后将其添加到文章阅读器中。然后生成大量的SQL语句(通过show SQL模式检查)。
我们如何从中优化它
def users = User.list();
users.each{
article.addToReaders(it)
}
使用以下sql代码进入具有类似性能(或可能是相同的性能)的东西
insert into user_article(article_id,user_id) select :article_id as article_id, id from user
Hibernate文档显示我们可以使用insert into ... select
语句。但由于多对多关系未映射到域类,因此无法使用这些HQL。有什么想法吗?