Ich habe zwei einfache Klassen Mitarbeiter und Abteilung und ich möchte Mitarbeiter nach Abteilung mit HQL auflisten, die dann in einer Ansicht angezeigt.Wie wird das HQL-Ergebnis angezeigt, um es in Grails anzuzeigen?
Zunächst einmal sind diese Domain Klassen Mitarbeiter und Abteilung
class Staff {
String fullName
String dateOfBirth
static belongsTo = [department: Department]
}
class Department {
String department
static hasMany = [staff: Staff]
}
Abteilung hat Instanzen wie Meer, Land, Luft.
hier ein StaffController.groovy (nur eine listbysea Aktion zum Beispiel) ist
def listbysea() {
params.max = Math.min(params.max ? params.int('max') : 10, 100)
//Query
def staffList = Staff.executeQuery("SELECT s.fullName from Staff s join s.department d WHERE d.department = 'Sea')
[staffInstance: staffList, staffInstanceTotal: staffList.size()]
}
Das ist mein listbysea.gsp
<table class="table table-striped table-hover table-bordered">
<thead>
<tr>
<g:sortableColumn property="fullName" title="${message(code: 'staff.fullName.label', default: 'Full Name')}" />
<g:sortableColumn property="dateOfBirth" title="${message(code: 'staff.dateOfBirth.label', default: 'Date of Birth')}" />
</tr>
</thead>
<tbody>
<g:each in="${staffList}" status="i" var="staffInstance">
<tr class="${(i % 2) == 0 ? 'even' : 'odd'}">
<td style="vertical-align: middle;"><g:link action="show" id="${staffInstance.id}"> ${fieldValue(bean: staffInstance, field: "fullName")}</g:link></td>
<td style="vertical-align: middle;"> ${fieldValue(bean: staffInstance, field: "dateOfBirth")}</td>
</tr>
</g:each>
</tbody>
</table>
jedoch
gibt es keine in der Tabelle angegebenen Daten und I Ich bin mir nicht sicher, ob die Abfrage tatsächlich überhaupt zu Ergebnissen führt oder ob es sich um ein Problem mit der Ansicht handelt. Also habe ich gefragt, ob ich das Richtige getan habe, um das Abfrageergebnis an die View zurückzugeben. Ich habe sogar versucht, diese Abfrage
def staffList = Staff.executeQuery("SELECT new map(s.fullName as fullName, d.department as department)\
FROM Staff as s, Department as d \
WHERE s.department = d HAVING s.department = ('Sea')")
Aber immer noch kein Ergebnis angezeigt.
Schätzen Sie jeden Hinweis.
zu beheben, können Sie Stellen Sie immer etwas wie 'println staffList' in Ihren Controller, kurz vor der letzten Zeile. – GreenGiant