【问题标题】:how to check username and password in hibernate criteria with case sensitive如何在区分大小写的休眠条件中检查用户名和密码
【发布时间】:2017-02-06 13:47:12
【问题描述】:

我有一个简单的登录页面,用户名是“Admin”,密码是“hello”,但标准函数接受所有值,例如“HELLo”“HELLO”这种类型。我只想接受区分大小写的结果。我能做什么请任何人帮助我。

public Members logIn(Members members) {
    Criteria criteria = sessionFactory
        .getCurrentSession().createCriteria(Members.class);
    criteria.add(Expression.eq("memberUserName", members.getMemberUserName()));
    criteria.add(Expression.eq("password", members.getPassword()));

    Members Member=(Members) criteria.uniqueResult();
    return Member;
}

模型类:

@Entity
@Table(name="Members")
public class Members{
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    @Column(name = "memberId")
    private int memberId;

    @Column(name="memberUserName", unique=true)
    private String memberUserName;

    @Column(name="passwrd")
    private String password;

    @Column(name="memberName")
    private String memberName;
}

【问题讨论】:

  • Case-insensitive equals using Hibernate Criteria 的可能重复项(查看更新的答案,现在已弃用接受的答案)
  • 当您的链接不区分大小写时,他似乎想要区分大小写。默认情况下,惊讶的 Hibernate 会不区分大小写?
  • @TheBakker 确实,但老实说同样令人惊讶^^我应该检查一下,我不记得它是不区分大小写的......这可能取决于实际使用的数据库(以及编码)
  • 可能是数据库中的列定义不区分大小写?
  • 如何检查数据库。不区分大小写?

标签: java hibernate


【解决方案1】:

MySQL 默认使用不区分大小写的排序规则。您需要设置数据库排序规则以使其完全区分大小写,或者您需要应用自定义列定义,以指定特定列的排序规则以区分大小写。

看到这个post

【讨论】:

  • 如何在休眠条件下做到这一点?
  • 您不能将此作为 Criteria API 的一部分。这是您必须在 @Column(columnDefinition="...") 配置中执行的操作,或者您需要手动操作表格列。
猜你喜欢
  • 2011-09-25
  • 1970-01-01
  • 2019-09-16
  • 2020-05-01
  • 2015-07-31
  • 1970-01-01
  • 2016-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多