Запрос преобразования 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
    }
}

Надеюсь, это поможет.

Другие вопросы по тегам