Чувствительный к регистру запрос в Hibernate (MySQL) - PullRequest
0 голосов
/ 19 сентября 2018

Я хочу сделать несколько чувствительных к регистру запросов в моем проекте 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']

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

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, так что, может кто-нибудь помочь мне сделать запрос с учетом регистра, пожалуйста?Благодарю.Table on MySQL

1 Ответ

0 голосов
/ 19 сентября 2018

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

"... WHERE u.login = binary ( '"+ логин + "') И u.contrasenya = бинарный ('" + контрасеня + "')";

Также вы можете избежать внедрения SQL, используя параметры запроса вместо конкатенации строк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...