Grails与存储过程结果集的域类关联

时间:2013-11-25 05:54:16

标签: mysql grails stored-procedures views gsp

大家好,

是否可以将存储过程的结果集与grails域类相关联?

我将此数据库视图映射到域类,其工作方式类似于魅力,但在典型功能中,我需要根据最终用户提供的某些参数生成数据库视图。在那种情况下,我不能将参数传递给db视图,所以我创建了一个存储过程,它将给我与视图相同的结果集,但在涉及多个表&从最终用户获取参数。

在grails视图(list.gsp)中,我使用的大部分插件都基于域类,例如:filterpane。 所以我不能简单地将存储过程中的结果显示为grails

我是grails的新手。我已经通过grails froums,googled很多但无法在这个主题中得到任何建议。

1 个答案:

答案 0 :(得分:1)

当您需要域类中的计算字段时,Grails会提供transient fields。您可以将计算逻辑包装在服务中,在使用之前更改域类实例。

class MyDomain {
  BigDecimal calcField

  static transients = ['calcField']
}

class MyService {
  def dataSource

  List<MyDomain> getInstances() {
    def instances = MyDomain.findAllBy...()
    instances.each { MyDomain ins ->
       doCalcField(ins)
    }

    instances

  }

  void doCalcField(MyDomain myDomain) {
    groovy.sql.Sql sql = new Sql(dataSource)
    //call procedure, returning values as OUT
    myDomain.calcField = calcField //assign out to domain instance
  }

}

根据您的计算,最好直接在服务中进行,使您的代码数据库独立。