代码一:
private List getListByName(String sql, Object[] args)
throws RuntimeException {
Session session = getSession();
Query query = session.createQuery(sql);
if (args != null) {
for (int i = 0, size = args.length; i < size; i++) {
System.out.println("hql: " + sql);
System.out.println("param: " + args[i]);
query.setParameter(i,args[i]);
}
}
System.out.println("queryString: " + query.getQueryString());
List list = query.list();
System.out.println("result: " + list);
return list.size() == 0 ? null : list;
}执行结果:
hql: from Role where roleName = ?
param: ROLE_TEACHER
queryString: from Role where roleName = ?
Hibernate:
select
role0_.ROLE_ID as ROLE1_9_,
role0_.ROLE_NAME as ROLE2_9_,
role0_.description as descript3_9_
from
EM_ROLE role0_
where
role0_.ROLE_NAME=?
result: []
代码二:private List getListByName(String sql, Object[] args)
throws RuntimeException {
sql = "from Role where roleName ='ROLE_TEACHER'";
Session session = getSession();
Query query = session.createQuery(sql);
/**
if (args != null) {
for (int i = 0, size = args.length; i < size; i++) {
System.out.println("hql: " + sql);
System.out.println("param: " + args[i]);
query.setParameter(i,args[i]);
}
}**/
System.out.println("queryString: " + query.getQueryString());
List list = query.list();
System.out.println("result: " + list);
return list.size() == 0 ? null : list;
}结果:
queryString: from Role where roleName ='ROLE_TEACHER'
Hibernate:
select
role0_.ROLE_ID as ROLE1_9_,
role0_.ROLE_NAME as ROLE2_9_,
role0_.description as descript3_9_
from
EM_ROLE role0_
where
role0_.ROLE_NAME='ROLE_TEACHER'
result: [com.swallow.oes.entity.Role@12394f8]大家能不能找到 【代码一】中是什么问题,这个问题已经托了我两三天了。急啊!!
private List getListByName(String sql, Object[] args)
throws RuntimeException {
Session session = getSession();
Query query = session.createQuery(sql);
if (args != null) {
for (int i = 0, size = args.length; i < size; i++) {
System.out.println("hql: " + sql);
System.out.println("param: " + args[i]);
query.setParameter(i,args[i]);
}
}
System.out.println("queryString: " + query.getQueryString());
List list = query.list();
System.out.println("result: " + list);
return list.size() == 0 ? null : list;
}执行结果:
hql: from Role where roleName = ?
param: ROLE_TEACHER
queryString: from Role where roleName = ?
Hibernate:
select
role0_.ROLE_ID as ROLE1_9_,
role0_.ROLE_NAME as ROLE2_9_,
role0_.description as descript3_9_
from
EM_ROLE role0_
where
role0_.ROLE_NAME=?
result: []
代码二:private List getListByName(String sql, Object[] args)
throws RuntimeException {
sql = "from Role where roleName ='ROLE_TEACHER'";
Session session = getSession();
Query query = session.createQuery(sql);
/**
if (args != null) {
for (int i = 0, size = args.length; i < size; i++) {
System.out.println("hql: " + sql);
System.out.println("param: " + args[i]);
query.setParameter(i,args[i]);
}
}**/
System.out.println("queryString: " + query.getQueryString());
List list = query.list();
System.out.println("result: " + list);
return list.size() == 0 ? null : list;
}结果:
queryString: from Role where roleName ='ROLE_TEACHER'
Hibernate:
select
role0_.ROLE_ID as ROLE1_9_,
role0_.ROLE_NAME as ROLE2_9_,
role0_.description as descript3_9_
from
EM_ROLE role0_
where
role0_.ROLE_NAME='ROLE_TEACHER'
result: [com.swallow.oes.entity.Role@12394f8]大家能不能找到 【代码一】中是什么问题,这个问题已经托了我两三天了。急啊!!
解决方案 »
- jquery.load(**.json) 解析不了。。求帮忙
- 服务器端的session会总是占着内存吗?
- 关于java.lang.IllegalStateException 异常的个人理解
- struts下载文件后提交刷新再回到本页面
- 关于JSP中popUpWindow弹出窗口的问题?
- 自定义标签的问题
- textarea 显示数据库字段的内容
- 100分!!大家帮我想想我这个网站该如何推广http://www.31qq.com
- 用javascript实现字符串的比较
- jsp连接Oracle数据库!急!
- 请教:什么情况下采用hibernate开发比较好?
- 在spring中配置Hibernate事务出错
这里的i 是不是应该从1开始 , 你试试看看
public Query setParameter(int position,
Object val)
throws
Parameters:
position - the position of the parameter in the query string, numbered from 0.
val - the non-null parameter value
真是的找不问题,这也才是大问题。先屏蔽掉,下次遇到再说了。
郁闷的很,刚做项目就遇到这事。。
Object[]对象数组,在query.setParameter(i,args[i]);中的args[i]转为(String)args[i]。
我把args[i]改为:"'" + args[i] + "'" 还是不行的,真不知道是哪里的问题的了。
private List getListByName(String sql, Object[] args)
throws RuntimeException {
Session session = getSession();
Query query = session.createQuery(sql);
if (args != null) {
for (int i = 0, size = args.length; i < size; i++) {
System.out.println("hql: " + sql);
System.out.println("param: " + args[i]);
//query.setParameter(i,args[i]);
query = query.setParameter(i,args[i]);
}
}
System.out.println("queryString: " + query.getQueryString());
List list = query.list();
System.out.println("result: " + list);
return list.size() == 0 ? null : list;
}试一下
(
"ROLE_ID" INTEGER NOT NULL,
"ROLE_NAME" CHAR(50),
"DESCRIPTION" CHAR(50),
CONSTRAINT PK_EM_ROLE PRIMARY KEY ("ROLE_ID")
);
怎么会是CHAR呢??? 应该是varchar2才对的,这个失误是因为我用PD直接生成的SQL,
检查的时间没有注意到的了。 现在问题来了。
用CHAR,在数据中用length查出role_name的长度为50没错,问题是
用SQL:select * from em_role where role_name='ROLE_TEACHER' 是能查出来的,
也就是帖子问题的第二段代码能实现的,问题是第一个为什么就查不出来? 这和Hibernate 有关吗??