【问题标题】:Fetching sets of objects from GORM从 GORM 获取对象集
【发布时间】:2011-02-04 13:05:58
【问题描述】:

我正在研究 Grails。 在某些时候,我必须根据它们的 id 从数据库中获取大量对象。 如果我按 id 做这个,性能很差。

ids.each{
   Myclass.findById( id )
   ...
}

鉴于对于存储批次有有用的 withTransaction 闭包,是否可以执行类似的操作来获取对象,而不是存储它们?

另一个想法可能是长 HQL 查询,例如:

"select * from Myclass where (id = 1) OR ( id = 2) ... OR ( id = n )"

这是一个好的解决方案吗?

谢谢!

【问题讨论】:

    标签: grails transactions batch-file grails-orm


    【解决方案1】:

    this question 中所述,HQL 支持基于一组值进行选择的更好语法,GORM 的find() 方法支持这种语法。 GORM dynamic finders 也支持如下语法:

    def myObjs = MyClass.findByIdInList(ids)
    

    同样,如果您的操作是只读的,您可以使用getAll(),这将利用 Hibernate 对只读事务进行的优化。

    【讨论】:

      猜你喜欢
      • 2021-02-28
      • 1970-01-01
      • 1970-01-01
      • 2021-02-24
      • 2014-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-08
      相关资源
      最近更新 更多