Чувствительный к регистру запрос в Hibernate (MySQL)

0

Я хочу сделать некоторые запросы с учетом регистра в моем проекте Hibernate, но всякий раз, когда я использую "BINARY" или "COLLATE" в запросе, чтобы сделать его чувствительным к регистру, я получаю эту ошибку:

org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: BINARY near line 1, column 51 [SELECT u FROM entidades.Usuario u WHERE u.login = BINARY 'XNC' AND u.contrasenya = BINARY 'xnc']

Это полный (и оригинальный) код:

Session session = sessionFactory.getCurrentSession();
String select;

try {
        session.beginTransaction();


        select = "SELECT u FROM " + getEntityClass().getName() + " u WHERE u.login ='" + login + "' AND u.contrasenya ='" + contrasenya +"'";
    }

    Query query = session.createQuery(select);
    Usuario usu =  (Usuario) query.uniqueResult();
    session.getTransaction().commit();
    return usu;

    }catch (Exception ex) {
        ex.printStackTrace();
        funciones.mostrarMensajeError(ex.getMessage());
    }

Моя таблица тоже utf8_bin, так, может кто-нибудь поможет мне сделать запрос с учетом регистра, пожалуйста? Благодарю. Изображение 174551

Теги:
hibernate

1 ответ

1
Лучший ответ

Просто используйте двоичный файл как функцию, которая по-прежнему является допустимым синтаксисом SQL, но также принимается Hibernate:

"... WHERE u.login = binary ( '" + login + "' ) И u.contrasenya = двоичный ( '" + contrasenya + "' ) ";

Кроме того, вы можете избежать SQL-инъекции, используя параметры запроса, а не конкатенацию строк.

  • 0
    Большое спасибо! Работал как шарм!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню