SELECT dealer_group_user_dealer_users_id, COUNT(user_id)
FROM db.dealer_group_user_user
GROUP BY dealer_group_user_dealer_users_id;
В вашем классе пользователя у вас есть:
Retailer dealer
Итак, давайте начнем с самого начала, что делает запрос, перечисляя пользователей от пользователя, а затем подсчитывая, сколько раз пользователь появляется в классе домена Retailer?
Лучший способ сделать это будет
быть
String query = """ select
new map(
u.id as userId,
(select count(d) from DealerGroupUser d left join d.dealerUsers du where du=u) as userCount
)
From user u order by u.id
"""
def results = User.executeQuery(query,[:],[readOnly:true]
Это должно делать то, что вы делаете, я думаю.
И можно ли выполнить запрос на странице gsp для отображения
результат для определенного user_id в отличие от выполнения запроса в
контроллер
Представления - это слой presentation
, и хардкорную работу следует избегать, если необходимо использовать вызов TagLib
.
Контроллеры, хотя они используются в примерах Grails и используются по умолчанию, чтобы упростить работу, также не лучшее место. Вы должны делать это в service
, который равен injected
в controller
и представлен в view
как фактическая модель того, что необходимо.
Это правильный путь - у GSP есть размер среды выполнения - оставьте его коротким, оставьте его сладким