Arhn - архитектура программирования

Как использовать левое соединение в Grails?

У меня есть приведенный ниже запрос, который получает правильные результаты в mysql, когда я пишу тот же запрос в Grails, он выдает ошибку «Путь, ожидаемый для соединения»

select u.username,u.transactioncode,count(distinct t.rolename) roles
from user u 
left join transaction t on u.transactioncode=t.transactioncode 
group by u.username, u.transactioncode; 

How to change the query?

Modifying the query to make it work in grails

function(int id)
 {
   def sql = new Sql(dataSource)
        def output = sql.rows("select 
        u.username,u.transactioncode,count(distinct t.rolename) roles from 
        user u left join transaction t on 
        u.transactioncode=t.transactioncode where u.userid=:id group by 
        u.username, u.transactioncode")
       sql.close();
 }

 It throws an error in the where condition You have an error in your SQL 
 syntax; check the manual that corresponds to your MySQL server version for 
 the right syntax to use near ':id.
18.04.2018

  • Как вы реализуете этот запрос в Grails? Можете ли вы использовать критерии? 18.04.2018
  • Ниже приведен мой запрос в grails: .код операции); 18.04.2018
  • Теперь это запрос HQL. Есть ли у пользователя объявление транзакции внутри доменного класса. Если это так, запрос должен быть select new map (u.username as username ,u.transactioncode as transaction code,count(distinct t.rolename) as roles) from user u left join u.transaction t group by u.username, u.transactioncode 19.04.2018

Ответы:


1

Я думаю, что проще всего было бы использовать Groovy SQL< /а>. Чтобы это работало, вы должны внедрить dataSource в свой сервис или контроллер:

import javax.sql.DataSource

DataSource dataSource

а затем выполните запрос, например

new Sql(dataSource).rows(q)

Где q будет вашим точным запросом.

Вот хорошее руководство по использованию Groovy SQL с Grails.


Я даже не знаю, можно ли использовать левые соединения во встроенном HQL - и это то, что следует использовать с executeQuery. Criterias, как упоминал @JMa, был бы допустимым вариантом, но я думаю, что они обычно используются для запросов к объектам домена, и вам нужен настраиваемый набор результатов. Это еще одно хорошее объяснение того, когда использовать различные варианты запросов в Grails.

18.04.2018
  • Привет, suricatta, спасибо за решение и предоставление ссылок на запросы. 19.04.2018
  • Я рад, что смог помочь, GrailsLearner. И ссылки действительно хорошие, в начале легко потеряться, когда дело доходит до запросов. 20.04.2018
  • Привет, suricatta, я изменил приведенный выше запрос, чтобы он работал в Grails. Но когда я использую условие where в указанном выше формате, возникает указанная выше ошибка. Как именно мы должны использовать условие where в SQL. 21.05.2018
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..