最近在看别人写的代码,看到下面这段有点疑惑final String queryString = "select count(r.adminId) from Admin r where r.adminLoginName =:name and r.adminId !=:id ";
return (Boolean) getHibernateTemplate().execute(
new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = session.createQuery(queryString)
.setString("adminLoginName", username).setString("adminId", (null==userid?"":userid));
return Integer.valueOf(query.uniqueResult().toString()) > 0;
}
});那段queryString不是sql语句吗,sql语句使用Query类去查询不会有问题吗?望指教
return (Boolean) getHibernateTemplate().execute(
new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = session.createQuery(queryString)
.setString("adminLoginName", username).setString("adminId", (null==userid?"":userid));
return Integer.valueOf(query.uniqueResult().toString()) > 0;
}
});那段queryString不是sql语句吗,sql语句使用Query类去查询不会有问题吗?望指教
也可写成:
"select count(r.adminId) from 包命.Admin r where r.adminLoginName =:name and r.adminId !=:id ";
如果持久类也叫Admin,表名也叫Admin,是不是在写HQL语句的时候,Admin前面就要加上包名来判断是持久类还是表名了?
+1
不要跟表名
自己去看书吧。你这样问是浪费大家的时间。
看代码之前你至少要明确hql语句是什么,他是怎样执行的。最终它要转换成什么来和数据库交互。
你这样问,让大家怎样帮你。hql是不查表名的,你还一直问怎样区分表名和类名。
给你打个比方:数据加里有一张表叫Admin 后后通过配置文件或注解把 com.test.Admin和数据库表Admin映射起来。用HQL语句查询from Admin查询的是对象,是com.test.Admin这个对象,然后hibernate再根据配置文件来生成sql语句来操作Admin这张表。
我这样说你明白了吧,如果还不明白,建议你还是看书得了。至少看了书,这样的问题就不用再问了。