gpt4 book ai didi

java - 当存在撇号时,Hibernate Criteria 无法找到结果

转载 作者:太空宇宙 更新时间:2023-11-04 07:11:51 24 4
gpt4 key购买 nike

简而言之问题:

当查询包含撇号'时,Hibernate criteria.list 无法找到对象

长版本:

hibernate :3.2.7.ga

当用户注册时,它们将通过以下 hibernate 调用保存在数据库中:

 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 将返回一个空列表。我检查过,我知道用户已保存在数据库上,它根本无法使用此代码检索它。

有什么想法吗?

更多信息

条件列表实际上运行此代码(为了清楚起见,删除了一些字段):

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 中是一个字符串,在 SQL 代码中是一个变化的字符(255)。映射为:

<property
name="loginid"
type="java.lang.String"
column="loginid"
not-null="true"
unique="true"
/>

其他信息:

  • 数据库:Postgres SQL 9.3
  • hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
  • 数据源类:“org.springframework.jdbc.datasource.DriverManagerDataSource”

最佳答案

PEBAK...登录表单设置为将用户登录截断为比注册表单更短的字符数 - 巧合的是,我用撇号测试的字符串也很长。简而言之,问题是由于用于标准的用户名不正确造成的。

关于java - 当存在撇号时,Hibernate Criteria 无法找到结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20540955/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com