hibernate - Grails 如何在 g:each 中显示 HQL JOIN 值
问题描述
我想问如何在查看页面上显示此代码结果
控制器
query =" select subs.firstName, trx.currentBalance from Transaction trx, Subscriber subs where
trx.subscriberID = subs.msisdn and trx.subscriberID = '0' and trx.date ='2020-09-04'"
query= Transaction.executeQuery(query);
使用此代码:
查看页面
<g:each in="${listQueryTable}" status="i" var="userInstance">
<tr>
<td>${userInstance.firstName}</td> <-- this code does not work for me
<td>${userInstance.currentBalance}</td> <-- this code does not work for me
</tr>
</g:each>
解决方案
在控制器中使用像您这样的 HQL 查询,您可以使用如下索引在 GSP 中显示它的值:
<g:each in="${listQueryTable}" status="i" var="userInstance">
<tr>
<td>${userInstance[0]}</td>
<td>${userInstance[1]}</td>
</tr>
</g:each>
因为 的每个元素listQueryTable
都是一个Object[]
.
作为一种变体,您可以像这样将每个列表的元素转换为地图:
query =" select subs.firstName, trx.currentBalance, ..."
listQueryTable = Transaction.executeQuery(query).collect{ [ firstName:it[0], currentBalance:it[1], ... ] }
那么您可以使用您原来的 GSP 进行展示。
正确的解决方案是摆脱原始 HQL 查询并使用 Hibernate/GORM 方法为 View 构建模型。您必须在域类之间添加引用并使用动态查找器或条件查询。
推荐阅读
- pandas - 如何将 pandas DataFrame 转换为 tensorflow 数据?
- windows-10 - 如何使用 Hyper-V 让 Vagrant Homestead 启动
- java - 用盐认证
- python-2.7 - 如何获取 PID 并将其导出到日志文件
- reactjs - 动态href反应材料ui抽屉
- c# - 发布表单将路由值作为查询字符串而不是 url 段发送
- c# - Xamarin ListView 显示不同类型的对象
- delphi - 有没有一种真正的方法可以在 TeeChart 中隐藏系列的一部分?
- php - array_push() 期望参数 1 是给定的数组 null
- ios - 弹出视图时完成处理程序会发生什么?