我正在尝试检查数据库中是否存在与传递的String相等的用户名。 这是方法。
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;
}
我在数据库中输入了用户名和查询信息:
select count(*) from User where username='fabio'
表:
USER( username CHAR(20),
pass CHAR(40),
loggedstatus BOOLEAN,
PRIMARY KEY(username));
它返回正确的1。
但是当我使用userna=fabio
时,该方法总是返回0。
我不能使用uniqueResult()
,因为Hibernate5不允许使用它。
为什么?
答案 0 :(得分:0)
我解决了这样的问题:
(function() {
'use strict';
//get the meta element with id fedora-keys
var link = document.querySelector('meta#fedora-keys');
//set the data-env attribute to development
link.setAttribute('data-env', 'development');
})();
我认为该错误是由于使用特定于Hibernate查询的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;
}
类引起的。
Query
接受方言查询,在我的情况下为SQL(例如我使用的方法)