大家好,
是否可以将存储过程的结果集关联到 grails 域类...?
我将这个数据库 View 映射到一个域类,这就像一个魅力,但在典型的功能中,我需要根据最终用户提供的某些参数生成数据库 View 。在那种情况下,我无法将参数传递给数据库 View ,所以我创建了一个存储过程,它会给我与 View 相同的结果集,但在涉及多个表的计算和从最终用户获取参数之后。
在 grails views (list.gsp) 中,我使用的大部分插件都是基于域类的,例如:filterpane。 所以我不能简单地将存储过程的结果显示到 grails 中
我是 Grails 的新手。我浏览了 grails froums,用谷歌搜索了很多但无法获得有关该主题的任何建议。
最佳答案
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
}
}
根据你的计算,最好直接在服务中做,让你的代码数据库独立。
关于mysql - Grails 域类与存储过程结果集的关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20185685/