把ArrayList中的元素类型不要统一设成String,然后在根据传入的ArrayList中的元素的类型来判断使用setString还是setDate等等,这样不行吗?
解决方案 »
- Hibernate 多表关联查询问题
- struts2在jsp页面提交中文的时候到action中的中文乱码问题
- jsp中导出数据
- 关于struts怎样得到前台动态text框内的参数问题!!!!!!!!!!!!!!!!!!!!!!!
- spring mvc一个小例子,验证跳转后的错误!
- 求助:Struts 二进制发布包
- 关于ejb的两个问题,一个50分,决不食言,问题解决就结贴!
- 请问EJB的客户端可以是非Java平台的程序吗?例如Delphi。如何实现?
- 关于EJB部署的问题 急 急 急!!!!!!!
- shiro 自定义过滤器如何当无权限时返回json字符串?
- 请诸位高手帮我看一看,急。。。
- Xfire问题。(想了一天半不知为什么错误,没时间仔细看User Guide)
if( xxx instanceof String)
pstmt.setString();
if (xxx instanceof Date)
pstmt.setDate();
...
能举个例子说明一下吗???谢谢了!!aChinese(一个中国人)
你的方法确实可以解决问题,但是不是有点繁琐?如果这样的话,那我岂不是要把所有的类型都要IF到?那。。
HB里有类似pstmt.setString(countI, temStr);这样一种方法搞定所有参数的类方法吗?你平常的动态综合搜索又是怎么做的呢??(比如说车辆系统,可以根据车牌号码,生产日期,购买费用,驾驶员来搜索所要的记录,有可能是一个条件,也有可能是几个条件综合。你在搜索的时候也是如你所说的吗?)
写一堆if 是麻烦, 反正也就麻烦一次. 综合搜索我是用sql做的, 只做查询,不会修改数据, 所以也不怕不能和hibernate同步.
一般都这么写
DeteachedCriteria dcri = DeteachedCriteria.forClass(TB1.class);
if( 车牌号码 != null || !"".equals(车牌号码))
dcri.add(Restrictions.eq("carNo",车牌号码);
if( 生产日期1 != null || !"".equals(生产日期1))
dcri.add(Restrictions.le("brith",生产日期1);
if( 生产日期2 != null || !"".equals(生产日期2))
dcri.add(Restrictions.ge("brith",生产日期2);
...
一大堆if 把条件都包含进去
然后执行
dcri.getExecutableCriteria(session)
.list();
你用setParameter阿,不需要类型判断。Query q=session.createQuery("from TB1 tb1 where tb1.item1=?,tb1.item2=?...")
q.setParameter(0,"a");
q.setParameter(1,new Integer(2));
q.setParameter(2,"2006-6-6")
.............
谢谢指教,你应该就是我想要的,但这种会不会在运行期发生强类型编译错误??确定可行吗?
TO:javaRoot()
JAVA反射??具体怎么做?能指教一二吗?
下面这段代码是spring里的
public List find(final String queryString, final Object[] values) throws DataAccessException {
return (List) execute(new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException {
Query queryObject = session.createQuery(queryString);
prepareQuery(queryObject);
if (values != null) {
for (int i = 0; i < values.length; i++) {
queryObject.setParameter(i, values[i]);
}
}
return queryObject.list();
}
}, true);
}