GORM多对多批量插入

时间:2014-04-02 05:57:55

标签: hibernate grails hql gorm

我们如何在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。有什么想法吗?

0 个答案:

没有答案