我想對(duì)我的 Hibernate 項(xiàng)目進(jìn)行一些區(qū)分大小寫的查詢,但是每當(dāng)我在查詢上使用“BINARY”或“COLLATE”以使其區(qū)分大小寫時(shí),我都會(huì)收到此錯(cuò)誤: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,所以,有人可以幫我做一個(gè)區(qū)分大小寫的查詢嗎?謝謝。
1 回答

富國滬深
TA貢獻(xiàn)1790條經(jīng)驗(yàn) 獲得超9個(gè)贊
只需使用 binary 作為函數(shù),這在 SQL 中仍然是有效的語法,但也被 Hibernate 接受:
"... WHERE u.login = binary( '" + login + "' ) AND u.contrasenya = binary( '" + contrasenya +"' ) ";
此外,您可能希望通過使用查詢參數(shù)而不是字符串連接來避免 SQL 注入。
添加回答
舉報(bào)
0/150
提交
取消