Hibernate (MySQL) 上的区分大小写的查询

我想对我的 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,所以,有人可以帮我做一个区分大小写的查询吗?谢谢。

http://img4.mukewang.com/6153ca7d00018e3006680149.jpg

九州编程
浏览 147回答 1
1回答

富国沪深

只需使用 binary 作为函数,这在 SQL 中仍然是有效的语法,但也被 Hibernate 接受:"... WHERE u.login = binary( '" + login + "' ) AND u.contrasenya = binary( '" + contrasenya +"' ) ";此外,您可能希望通过使用查询参数而不是字符串连接来避免 SQL 注入。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java