为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

九州编程 2021-09-29 09:35:49
我想对我的 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,所以,有人可以帮我做一个区分大小写的查询吗?谢谢。
查看完整描述

1 回答

?
富国沪深

TA贡献1790条经验 获得超9个赞

只需使用 binary 作为函数,这在 SQL 中仍然是有效的语法,但也被 Hibernate 接受:

"... WHERE u.login = binary( '" + login + "' ) AND u.contrasenya = binary( '" + contrasenya +"' ) ";

此外,您可能希望通过使用查询参数而不是字符串连接来避免 SQL 注入。


查看完整回答
反对 回复 2021-09-29
  • 1 回答
  • 0 关注
  • 146 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信