【发布时间】:2011-01-01 10:04:46
【问题描述】:
有没有办法将调用存储过程获得的结果行强制转换为特定对象,以便我可以只将该对象的列表传递到视图中?
我知道我可以使用 Node.list() 之类的东西来执行此操作,但我最终将用一个相当复杂的存储过程替换 getnodes(),该存储过程创建临时表并执行一些优化的 sql fu。但现在我只是在处理 grails 交互。
所以在 MySQL 方面我有以下存储过程:
CREATE DEFINER=`root`@`255.255.255.255` PROCEDURE `getnodes`()
BEGIN
select * from node;
END
在 grails 控制器上,我有以下内容:
def nodes = new ArrayList<Node>()
// collect all the nodes returned
sql.eachRow("{call getnodes()}") {
nodes.add(it as Node)
}
println "Nodes size is: " + nodes.size()
nodes.eachWithIndex { d, i ->
println "$i : $d"
}
我的计划是将节点传递给视图。
问题是上线就炸了:
nodes.add(it as Node)
这甚至可能吗?我的意思是这应该只是强迫,对吗?我做错了什么?
【问题讨论】:
-
我最终只是用 Node.get(it.id) 查找每个节点