Запрос преобразования SQL-запроса в критерии
Мне нужна помощь, чтобы я мог преобразовать My SQL в запрос критериев Grails:
String query = """select * from personal_detail as pd
where pd.id in (
select u.personal_detail_id from user u where u.id in
(
SELECT ur.user_id FROM user_role ur where ur.role_id = '${role.id}'
)
and u.enabled = true and u.is_deleted = false
)
and
pd.status = true
"""
Редактировать: я застрял на внутреннем видении, т.е.
SELECT ur.user_id FROM user_role ur where ur.role_id = '${role.id}'
для внутреннего выбора я попробовал это:
def results = UserRole.createCriteria().list {
createAlias('user','user')
eq('role', role)
eq('user.enabled',true)
eq('user.isDeleted',false)
}
Это генерирует исключение
Unknown column 'user1_.enabled' in 'where clause'. Stacktrace follows:
Message: Unknown column 'user1_.enabled' in 'where clause'
Line | Method
->> 411 | handleNewInstance in com.mysql.jdbc.Util
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 386 | getInstance in ''
| 1052 | createSQLException in com.mysql.jdbc.SQLError
| 4096 | checkErrorPacket in com.mysql.jdbc.MysqlIO
1 ответ
Трудно сказать наверняка, не видя вашей объектной модели, но вы можете искать что-то вроде этого...
def results = UserRole.withCriteria {
eq 'role', role
user {
eq 'enabled', true
eq 'isDeleted', false
}
}
Надеюсь, это поможет.