我想執行一個sql語句並將結果返回到Grails中的視圖。爲了澄清,我沒有試圖返回域對象並將它們顯示在視圖上。我有一個簡單的查詢,我加入了兩個表格,我只想將結果傳遞給視圖進行顯示。將查詢結果返回到Grails中的視圖
這裏是我的看法代碼:
<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head>
<meta name='layout' content='main'/>
<title></title>
</head>
<body>
<div id = 'overall'>
<g:if test="${queryResultMap.size() > 0}">
<table border="1">
<thead>
<tr>
<th>Banner ID</th>
<th>PIDM</th>
<th>Term</th>
<th>Processed Indicator</th>
</tr>
</thead>
<tbody>
<g:each in="${queryResultMap}" status="i" var="thisRecord">
<tr>
<td>${thisRecord.SPRIDEN_ID}</td>
<td>${thisRecord.SFRWDRL_PIDM}</td>
<td>${thisRecord.SFRWDRL_TERM_CODE}</td>
<td>${thisRecord.SFRWDRL_PROCESSED_IND}</td>
</tr>
</g:each>
</tbody>
</table>
</g:if>
<g:else>
No records were found to update.
</g:else>
</div>
</body>
</html>
這裏是我的控制器代碼:
//Create our database connection...
Sql sqlStatement = new Sql(dataSource)
//Here is my simple query
def sqlString =
"SELECT S.SPRIDEN_ID, " +
"D.SFRWDRL_PIDM, " +
"D.SFRWDRL_PROCESSED_IND, " +
"D.SFRWDRL_USER, " +
"D.SFRWDRL_USER_ID, " +
"D.SFRWDRL_ACTIVITY_DATE, " +
"D.SFRWDRL_TERM_CODE " +
"FROM SATURN.SPRIDEN S, SATURN.SFRWDRL D \n" +
"WHERE S.SPRIDEN_PIDM = \'" + pidm + "\' " +
"AND S.SPRIDEN_CHANGE_IND IS NULL " +
"AND S.SPRIDEN_PIDM = D.SFRWDRL_PIDM " +
"AND D.SFRWDRL_TERM_CODE = '" + term + "\' "
def returnList = []
//Put out query results into the queryResults array...
sqlStatement.eachRow(sqlString){
returnList << it.toRowResult()
}
//Close our database connection...
sqlStatement.close()
println returnList
return [queryResultMap: returnList]
當我運行這個我在控制檯看到下面的,所以我知道returnList有查詢的結果列表:
Error 500: Internal Server Error
URI
/FinAid-WithdrawalProcessIndicatorUpdate/sfrwdrl/processWithdrawalIndicator
Class
groovy.lang.MissingPropertyException
Message
No such property: SPRIDEN_ID for class: edu.unm.processindicator.Sfrwdrl
Grails表現得像是在尋找域對象(edu.unm.processindicator.Sfrwdrl),我試圖顯示一個來自returnList的值(而那些不是域對象)。我知道returnList陣列具有價值,因爲這是我所看到的,當它打印輸出到控制檯return語句之前:
[SPRIDEN_ID:101638052, SFRWDRL_PIDM:1638080, SFRWDRL_PROCESSED_IND:Y, SFRWDRL_USER:P_SZPGF02_MAIN, SFRWDRL_USER_ID:null, SFRWDRL_ACTIVITY_DATE:2014-02-05 14:15:46.0, SFRWDRL_TERM_CODE:201410]
如果我能排到顯示如何返回查詢結果一些具體的例子並將它們顯示在非常讚賞的視圖中。或者...我只是想說這些都是錯誤的,如果我想要顯示來自多個表的信息,我需要在我的域對象中定義一對多關係。我在Grails中甚至有可能做到這一點?我做了一堆搜索,並一直在查看Grails文檔中的標籤信息,但我無法找到答案。提前致謝!
如果這是兩個表的簡單查詢,爲什麼使用SQL直接? –
我組織即將開始使用Grails,現在我們正處於探索階段,我們將使用我們未設計的供應商提供的數據庫。我們希望通過許多連接執行復雜的查詢。這個問題不僅僅是我問如何解決這個問題。我們需要知道Grails實際上是否可以返回簡單的查詢結果(而不是域對象),因爲它會影響我們的開發人員代碼的標準... –