2016-12-28 10 views
0

私は2つのシンプルなクラスのStaffとDepartmentを持っており、ビューに表示されたHQLを使用して部門ごとにスタッフをリストしたいと思います。これらすべてのHQLの結果を表示してgrailsで表示するには?

まず、ドメインクラススタッフと

class Staff { 
String fullName 
String dateOfBirth 

static belongsTo = [department: Department] 

部門

}

class Department { 
    String department 

    static hasMany = [staff: Staff] 
} 

部門は、このような海、陸、空のようにインスタンスを持っています。ここで

は、これは私の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> 

はしかし、そこに表に示されているデータがありませんし、私であるStaffController.groovy(例えばのみlistbyseaアクション)

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()] 
    } 

です実際にクエリで結果が得られないのか、それともビューに問題があるのか​​は分かりません。だから私はビューにクエリの結果を返すには正しいことをやりましたか?私もこのクエリを試しました

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')") 

まだ結果が表示されていません。

任意のヒントを気に入ってください。

+0

'println staffList'のようなものをコントローラの最後の行の直前に置いてください。 – GreenGiant

答えて

0

コントローラで使用している変数名が、gspファイルが使用しているものと一致しません。

def staffList = Staff.executeQuery("SELECT s.fullName from Staff s join s.department d WHERE d.department = 'Sea') 
[staffInstance: staffList, staffInstanceTotal: staffList.size()] 

しかし、もしあなたがstaffListを使用GSPで:あなたはstaffInstanceを使用するコントローラで

<g:each in="${staffList}" status="i" var="staffInstance"> 

にコントローラを変更してみてください:あなたができる、トラブルシューティングする

[staffList: staffList, staffInstanceTotal: staffList.size()] 
+0

あなたの提案は正しかったですが、私は両方のクラスに共通の部門を選択しているので、私はHQLクエリーに関連すると思われるエラーがあります。 –

+0

それを聞いてうれしが助けた。これが正解だと思われる場合は、[回答の横にあるチェックマークアイコンをクリックすることを忘れないでください](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) )。 – GreenGiant

+0

えええええええええええええええええええええええええええええええええええええええええええええええええええええええええ、 –