【问题标题】:Can I do case sensitive comparison in HQL?我可以在 HQL 中进行区分大小写的比较吗?
【发布时间】:2011-11-24 17:27:28
【问题描述】:

我在 Hibernate 中写了这样的 HQL 查询:

User userLogIn = (User) entityManager
       .createQuery("from User as u where u.userName=:uname and u.passWord=:pwd")
       .setParameter("uname", user.getUserName())
       .setParameter("pwd", user.getPassWord()).getSingleResult();

上述查询工作正常,但不区分大小写。我想对密码应用区分大小写。

【问题讨论】:

  • 我认为列的区分大小写/不区分大小写取决于列的类型和数据库供应商。请告诉我们您使用的是什么数据库以及密码列是如何定义的。
  • 你是怎么解决这个问题的?

标签: hibernate hql case-sensitive


【解决方案1】:

我不确定您是否解决了正确的问题。出于安全原因,您不应将密码以明文形式保存到数据库中。您应该从密码计算哈希(例如 MD5)并将其作为十六进制数存储到 varchar 或 char(n) 字段中 - 您不需要关心区分大小写,因为 'a' 和 'A' 的哈希是不同的。

【讨论】:

    猜你喜欢
    • 2013-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-03
    • 1970-01-01
    相关资源
    最近更新 更多