在Hibernate标准中区分大小写搜索

RAS*_*RAS 5 java sql-server hibernate

我正在使用Hibernate 3和SQL Server 2008.我想在Hibernate Criteria中进行区分大小写的搜索.我无法实现它.我的代码如下:

Criteria criteria = session.createCriteria(User.class); /*line 1*/
criteria.add(Restrictions.eq("userName", userName));    /*line 2*/
Run Code Online (Sandbox Code Playgroud)

我有一个类User.java,其中包含一个String userName.

数据库条目:

id | user_name
--------------
1  | abc
2  | xyz
Run Code Online (Sandbox Code Playgroud)

现在,如果我"abc"userName第2行传递,那么它应该返回db中的第一条记录.但是,如果我通过"Abc","ABC","aBC"等如userName在第2行,没有记录将被取回.

我访问过这个链接,但它对我没有帮助,因为我不想使用与hql或SQL Server的排序规则.我愿意使用整理,Criteria但不知道该怎么做.

ez2*_*ang 7

Criteria criteria = s.createCriteria(User.class);
criteria.add(
    Expression.sql("userName = ? collate Latin1_General_CS_AS_KS_WS", userName, new StringType())
);
Run Code Online (Sandbox Code Playgroud)

  • 不推荐使用Expression.sql.改为使用:`Session session = HibernateUtil.getSession(); Criteria criteria = session.createCriteria(User.class); criteria.add(Restrictions.sqlRestriction("user_name =?collat​​e Latin1_General_CS_AS",userName,new StringType())); user =(User)criteria.uniqueResult();`请注意,在sqlRestriction中,列名必须是数据库表中的原始列名(与HQL不同) (3认同)