Запрос двух таблиц в скрипте Groovy - PullRequest
0 голосов
/ 16 декабря 2011

Как мне обработать этот SQL-запрос в граалях в моем скрипте ProductsController?Обратите внимание на две таблицы с объединением идентификатора продукта.

SELECT p.*,pd.* 
FROM products p, products_description pd 
WHERE p.products_id=pd.products_id
ORDER BY p.products_date_added DESC 

Очевидно, я не могу сделать это:

def all= {
    def a
     a = Products.find("FROM products p, products_description pd 
      WHERE p.products_id=pd.products_id ORDER BY p.products_date_added DESC")
     render a as JSON
}

Ответы [ 2 ]

1 голос
/ 17 декабря 2011

Если вы непреклонны в использовании пользовательского SQL-запроса вместо какого-либо динамического поиска Grails, вы можете использовать следующий код:

    def session = sessionFactory.getCurrentSession() // a reference to the sessionFactory is injected in all controllers and services that have a sessionFactory variable defined
     Query query = session.createSQLQuery("SELECT p.*,pd.* 
     FROM products p, products_description pd 
     WHERE p.products_id=pd.products_id
     ORDER BY p.products_date_added DESC");
     def result = query.list()

Вам потребуется добавить переменную с именем sessionFactory в свой контроллер.Примерно так:

    class ProductsController = {
      def sessionFactory

Список результатов будет списком списков.Каждый элемент основного списка будет список размером 2 с первым элементом в качестве продукта, а второй в качестве описания продукта.

0 голосов
/ 16 декабря 2011

Вы можете использовать отношение «многие к одному» и «один к одному» и позволить GORM позаботиться о вашей ассоциации.

class Products {
    ProductsDescription description
    ...
    static mapping = {
        description column: 'products_id'
    }
}

После этого вы сможете получить доступ кописание по ссылке:

a = products.listOrderByProductsDateAdded(order: 'desc')
a.description.productsDescription
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...