gpt4 book ai didi

java - 使用 hibernate 返回错误的查询计数值

转载 作者:行者123 更新时间:2023-11-29 16:02:59 26 4
gpt4 key购买 nike

我正在尝试检查数据库中是否存在等于传递的字符串的用户名。就是这个方法。

public  boolean alredyTakenUsername(String userna) {
int numb = 0;
s = sessionFactory.openSession();
try {
String sql = "SELECT COUNT(*) FROM User where User.username= :usern";
Query query = s.createQuery(sql);
query.setParameter("usern",userna);
numb = ((Number)query.getSingleResult()).intValue();
if (numb == 1)
return true;
else
return false;
}catch (Exception e){
e.printStackTrace();
} finally {
s.close();
}
return false;
}

我将用户名和查询放入数据库中:

从用户名='fabio'的用户中选择计数(*)

表:

USER( username CHAR(20),
pass CHAR(40),
loggedstatus BOOLEAN,
PRIMARY KEY(username));

它返回 1,这是正确的。但当我使用userna=fabio时,该方法总是返回0。我无法使用 uniqueResult() 因为 Hibernate5 不允许它。为什么?

最佳答案

我是这样解决这个问题的:

public  boolean alredyTakenUsername(String userna) {
s = sessionFactory.openSession();

try {
String sql = "SELECT COUNT(*) FROM User where User.username= :usern";
NativeQuery sqlQuery = s.createSQLQuery(sql);
sqlQuery.setParameter("usern",userna);
int numb = ((Number)sqlQuery.getSingleResult()).intValue();
if (numb == 1)
return true;
else
return false;
} catch (Exception e){
e.printStackTrace();
} finally {
s.close();
}
return false;
}

我认为这个错误是由于使用了特定于 Hibernate 查询的类 Query 造成的。NativeQuery 允许方言查询,在我的例子中是 SQL(就像我使用的方法)

关于java - 使用 hibernate 返回错误的查询计数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56010712/

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