public List<Timu> randomFindTimu(int number,List mubanzhishidians,Leixing leixing) {
Session session = getSession();//获得Session对象 zs.kemu.id ="+"'"+kemu.getId()+"'"
String hql = "from Timu as timu where timu.zhishidian in (:mubanzhishidians) and timu.leixing.id ="+"'"+leixing.getId()+"' order by newid";
Query query = session.createQuery(hql);
query.setFirstResult(0);
query.setMaxResults(number);
query.setParameterList("mubanzhishidians", mubanzhishidians);//好像是这里有问题,List mubanzhishidians里面是对象
List list = query.list();
session.close();
return list;
}
报错org.hibernate.PropertyAccessException: IllegalArgumentException occurred calling getter of com.tiku.model.Zhishidian.id……
root causejava.lang.IllegalArgumentException: object is not an instance of declaring class
求助
Session session = getSession();//获得Session对象 zs.kemu.id ="+"'"+kemu.getId()+"'"
String hql = "from Timu as timu where timu.zhishidian in (:mubanzhishidians) and timu.leixing.id ="+"'"+leixing.getId()+"' order by newid";
Query query = session.createQuery(hql);
query.setFirstResult(0);
query.setMaxResults(number);
query.setParameterList("mubanzhishidians", mubanzhishidians);//好像是这里有问题,List mubanzhishidians里面是对象
List list = query.list();
session.close();
return list;
}
报错org.hibernate.PropertyAccessException: IllegalArgumentException occurred calling getter of com.tiku.model.Zhishidian.id……
root causejava.lang.IllegalArgumentException: object is not an instance of declaring class
求助
解决方案 »
- SSH2中求一段Jquery实现Ajax的正确代码。
- java 备份oracle数据表
- java net url 问题
- 用 hibernate作的项目 ,用了一点时间后总出现 "WARN BatcherImpl:186 - Could not close a JDBC statement"
- 急求高手:javabean的问题
- cookie的问题,很急请大家帮一下
- struts ,tomact. jdk 版本兼容?
- 请问一个WEB工程里的一批全局常量放在哪?就是在整个WEB都可以访问到的常量?
- 菜鸟发问了
- 一个很简单的问题,急用!
- 一个关于hibernate插入数据的问题。
- 利用PHPRPC协议,客户端访问服务端,查询数据库信息,求高手指点,小弟刚学习的菜鸟
Hibernate: select shijuan0_.id as id1_0_, shijuan0_.mubanID as mubanID1_0_, shijuan0_.shijian as shijian1_0_, shijuan0_.leixing as leixing1_0_ from xintiku.dbo.shijuan shijuan0_ where shijuan0_.id=?
Hibernate: select muban0_.id as id16_0_, muban0_.mingtiren as mingtiren16_0_, muban0_.kemuID as kemuID16_0_, muban0_.zhuanyeID as zhuanyeID16_0_, muban0_.zongfen as zongfen16_0_, muban0_.shijian as shijian16_0_, muban0_.fenshu as fenshu16_0_, muban0_.nandu as nandu16_0_, muban0_.mingcheng as mingcheng16_0_, muban0_.leixing as leixing16_0_ from xintiku.dbo.muban muban0_ where muban0_.id=?
Hibernate: select jiaoshi0_.id as id13_0_, jiaoshi0_.gonghao as gonghao13_0_, jiaoshi0_.xingming as xingming13_0_, jiaoshi0_.mima as mima13_0_ from xintiku.dbo.jiaoshi jiaoshi0_ where jiaoshi0_.id=?
Hibernate: select kemu0_.id as id3_0_, kemu0_.mingcheng as mingcheng3_0_ from xintiku.dbo.kemu kemu0_ where kemu0_.id=?
Hibernate: select zhuanye0_.id as id0_0_, zhuanye0_.mingcheng as mingcheng0_0_ from xintiku.dbo.zhuanye zhuanye0_ where zhuanye0_.id=?
Hibernate: select muban0_.id as id16_0_, muban0_.mingtiren as mingtiren16_0_, muban0_.kemuID as kemuID16_0_, muban0_.zhuanyeID as zhuanyeID16_0_, muban0_.zongfen as zongfen16_0_, muban0_.shijian as shijian16_0_, muban0_.fenshu as fenshu16_0_, muban0_.nandu as nandu16_0_, muban0_.mingcheng as mingcheng16_0_, muban0_.leixing as leixing16_0_ from xintiku.dbo.muban muban0_ where muban0_.id=?
Hibernate: select jiaoshi0_.id as id13_0_, jiaoshi0_.gonghao as gonghao13_0_, jiaoshi0_.xingming as xingming13_0_, jiaoshi0_.mima as mima13_0_ from xintiku.dbo.jiaoshi jiaoshi0_ where jiaoshi0_.id=?
Hibernate: select kemu0_.id as id3_0_, kemu0_.mingcheng as mingcheng3_0_ from xintiku.dbo.kemu kemu0_ where kemu0_.id=?
Hibernate: select zhuanye0_.id as id0_0_, zhuanye0_.mingcheng as mingcheng0_0_ from xintiku.dbo.zhuanye zhuanye0_ where zhuanye0_.id=?
Hibernate: select mubanleixi0_.leixingID as leixingID10_, mubanleixi0_.mubanID as mubanID10_, mubanleixi0_.geshu as geshu10_, mubanleixi0_.fenzhi as fenzhi10_ from xintiku.dbo.mubanLeixing mubanleixi0_ where mubanleixi0_.mubanID='15'
Hibernate: select mubanzhish0_.mubanID as mubanID9_, mubanzhish0_.zhishidianID as zhishidi2_9_, mubanzhish0_.maxnandu as maxnandu9_, mubanzhish0_.minnandu as minnandu9_ from xintiku.dbo.mubanZhishidian mubanzhish0_ where mubanzhish0_.mubanID='15'
Hibernate: select top 1 timu0_.id as id14_, timu0_.zhishidianID as zhishidi2_14_, timu0_.leixingID as leixingID14_, timu0_.neirong as neirong14_, timu0_.daan as daan14_, timu0_.nandu as nandu14_, timu0_.zhukeguan as zhukeguan14_ from xintiku.dbo.timu timu0_ where (timu0_.zhishidianID in (? , ? , ? , ? , ?)) and timu0_.leixingID='1' order by newid
query.setParameterList("mubanzhishidians", mubanzhishidians);//好像是这里有问题,List mubanzhishidians里面是对象
我想知道setParameterList到 内容为对象的List里面 是什么东西,怎样能把对象传入呢?类似setEntity那样,但是setEntity只能传递一个对象,而我这里是一个对象list,需要传入多个对象整理了下SQL语句
Hibernate: select from xintiku.dbo.jiaoshi jiaoshi0_ where jiaoshi0_.id=?
Hibernate: from xintiku.dbo.kemu kemu0_ where kemu0_.id=?Hibernate: select ] from xintiku.dbo.zhuanye zhuanye0_ where zhuanye0_.id=?Hibernate: select ]from xintiku.dbo.muban muban0_ where muban0_.id=?
Hibernate: select from xintiku.dbo.jiaoshi jiaoshi0_ where jiaoshi0_.id=?Hibernate: select ] from xintiku.dbo.zhuanye zhuanye0_ where zhuanye0_.id=?Hibernate: select from xintiku.dbo.mubanLeixing mubanleixi0_ where mubanleixi0_.mubanID='15'Hibernate: select from xintiku.dbo.mubanZhishidian mubanzhish0_ where mubanzhish0_.mubanID='15'Hibernate: select top 1 from xintiku.dbo.timu timu0_ where (timu0_.zhishidianID in (? , ? , ? , ? , ?))
and timu0_.leixingID='1' order by newid
id属性没有提供get方法
"from Timu as timu where timu.zhishidian in :mubanzhishidians and ......"
hibernate内部解析的时候会自己加上括号
public List<Timu> randomFindTimu(int number,List mubanzhishidians,Leixing leixing) {
Session session = getSession();
/*String hql = "from Timu as timu where timu.zhishidian.id in (:mubanzhishidians) and timu.leixing.id ="+"'"+leixing.getId()+"' order by newid()";
Query query = session.createQuery(hql);
query.setParameterList("mubanzhishidians", mubanzhishidians);
*/
StringBuffer sb = new StringBuffer();
for (int i = 1; i < mubanzhishidians.size(); i++) {
sb.append(",?");
}
String hql2 = "from Timu as timu where timu.zhishidian.id in (?"+ sb + ") and timu.leixing.id ="+"'"+leixing.getId()+"' order by newid()";
Query query = session.createQuery(hql2);
for (int i = 0; i < mubanzhishidians.size(); i++) {
//int zhishidianid = mubanzhishidians.get(i).getId().getMuban().getId();
MubanZhishidian mubanZhishidian = (MubanZhishidian) mubanzhishidians.get(i);
MubanZhishidianId mubanZhishidianId = mubanZhishidian.getId();
Zhishidian zhishidian = mubanZhishidianId.getZhishidian();
int zhishidianid = zhishidian.getId();
query.setInteger(i, zhishidianid);
}
怎么能是个Sql语句的参数怎么能是个List呢?
如果你需要集合某个值的话的遍历啊!这样穿进去。
建议不要展位参数最好写成:from Timu as timu where timu.zhishidian.id in =?不知对否?
如果timu.leixing.id 不是字符串,去掉+"'"+leixing.getId()+"' 上的 单引号‘‘。