Как вызвать именованный запрос в Grails - PullRequest
2 голосов
/ 09 июля 2009

Учитывая следующий пример из Hibernate Make Easy , как я могу вызвать именованный запрос 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 ]

2 голосов
/ 28 октября 2009

1.2 представляет поддержку именованных запросов как часть замыкания внутри ваших доменных объектов. Это должно сделать это проще.

Из: 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()

Вот документация: http://grails.org/doc/latest/ref/Domain%20Classes/namedQueries.html

Похоже, что способность передавать параметры запланирована для 1.2RC1.

2 голосов
/ 10 июля 2009

Вы должны использовать сеанс Hibernate.

В Grails 1.1 вы можете использовать метод withSession класса.

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

В Grails 1.0 вам нужно внедрить объект sessionFactory в ваш контроллер / службу, чтобы получить к нему доступ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...