2009-07-09 9 views
2

以下のexample from Hibernate Make Easyが与えられていると、Grailsの名前付きクエリuser.findByLoginNameをどのように呼び出すことができますか?Grailsで名前付きクエリを呼び出す方法

package com.examscam.model; 
import javax.persistence.*; 
import org.hibernate.Session; 
import com.examscam.HibernateUtil; 
@Entity 
@Table(name = "user", schema = "examscam") 
@NamedQuery(name="user.findByLoginName", 
    query="from User where loginName = :name") 
public class User {  } 

答えて

2

ハイバネートセッションを使用する必要があります。

Grails 1.1では、クラスのwithSessionメソッドを使用できます。

User.withSession { session -> 
    return session.getNamedQuery('user.findByLoginName') 
     .setString('name', 'someName') 
     .list() 
} 

Grails 1.0では、SessionFactoryオブジェクトをコントローラ/サービスに挿入してアクセスする必要があります。

2

1.2では、ドメインオブジェクト内にクロージャの一部として名前付きクエリサポートを導入しています。それはこれをより簡単にするはずです。

http://grails.org/doc/latest/ref/Domain%20Classes/namedQueries.html

は1.2RC1のために予定されているパラメータに渡す機能のような音: http://www.grails.org/1.2-M3+Release+Notes

class Publication { 
    String title 
    Date datePublished 

    static namedQueries = { 
     recentPublications { 
       def now = new Date() 
       gt 'datePublished', now - 365 
     } 

     publicationsWithBookInTitle { 
      like 'title', '%Book%' } 
     } 
} 

使い方ここで

// get all recent publications… 
def recentPubs = Publication.recentPublications() 

は、docです。

関連する問題