首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

javaWeb->hql->in这个如何做才是对的呀

2012-09-01 
javaWeb-hql-in这个怎么做才是对的呀StringBuilder hql new StringBuilder(from Trade where ).appe

javaWeb->hql->in这个怎么做才是对的呀
StringBuilder hql = new StringBuilder("from Trade where ")
.append("shop = ? ")
.append("and workStatus in (?) ");
List<Object> paramsList = new ArrayList<Object>();
paramsList.add(trade.getShop());

List<WorkStatus> workStatusList = new ArrayList<WorkStatus>();
workStatusList.add(WorkStatus.CLIENT);
workStatusList.add(WorkStatus.FINANCIAL);
paramsList.add(workStatusList);//paramsList.add(workStatusList);后面这个也不行

    tradeDao.findByHql(hql.toString(), paramsList.toArray());
报的异常都是in后面的这个?的类型转换错误。
java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.Enum
用注释掉的会报
java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to java.lang.Enum
at org.hibernate.type.EnumType.nullSafeSet(EnumType.java:148)


[解决办法]
当前,类型也应该正确。看样子in里面应该是数字类型,而不是你的EnumType类.
[解决办法]

探讨

现在的想法是能不能在DAO中,根据传入的参数类型进行自动转换,当然通过多个?,名是拼接串是可以做到的,但是会比较麻烦,也不能达到通用的效果。

热点排行