当查询包含撇号'
时,Hibernate criteria.list无法找到对象Hibernate:3.2.7.ga
当用户注册时,它们将通过以下休眠调用保存在数据库中:
User user;
//set data in user
getHibernateTemplate().save(user);
正如预期的那样,这需要妥善处理撇号'等特殊字符。
但是当我使用以下代码检索用户时,它无法找到在用户名中注册了撇号的用户:
public User getUserByUsername(String username) {
Criteria criteria = this.getSession().createCriteria(User.class);
criteria.add(Restrictions.eq("loginid", username));
List<Utente> users = criteria.list();
User user = null;
if (!users.isEmpty()) {
user = users.get(0);
}
return user;
}
代码与普通用户名(例如“test”)一起使用,但在提供类似“test'test”的用户名时,criteria.list将返回一个空列表。 我查了一下,我知道用户在db上保存了,它根本无法使用此代码检索它。
有什么想法吗?
标准列表实际运行此代码(为清晰起见,删除了一些字段):
select this_.id as id0_0_, this_.loginid as loginid0_0_, this_.password as password0_0_, this_.email as email0_0_ from user this_ where this_.loginid=?
loginid是Java中的String,SQL代码中的字符变化(255)。 映射为:
<property
name="loginid"
type="java.lang.String"
column="loginid"
not-null="true"
unique="true"
/>
答案 0 :(得分:1)
PEBAK ...登录表单设置为将用户登录截断为比注册表单更短的字符数量 - 巧合的是我用撇号测试的字符串也很长。简单地说,问题是由于用于标准的用户名不正确。