首页 新闻 搜索 专区 学院

请问一个简单的问题

0
悬赏园豆:10 [待解决问题]

从多个下拉列表获取值。然后传入进去一个对象中。然后根据对象中的值对数据库取值。不过hql语句要怎么写,我尝试着这样写。但是如果有些空值的时候就会报错了,报了空异常,该怎么动态取值啊!

hql = "FROM Delivery WHERE delivery.workerNub = '"
+ delivery.getWorkerNub()
+ "' AND delivery.deliveryName= '"
+ delivery.getDeliveryName()+ "' AND delivery.deliveryArea= '"+delivery.getDeliveryArea()+"' AND delivery.deliveryAddress= '"
+delivery.getDeliveryAddress()+"' AND delivery.idCard= '"+delivery.getIdCard()+"'";

问题补充:

如果判断是否为空,然后追加。但是如何确定and的位置

finly的主页 finly | 初学一级 | 园豆:3
提问于:2012-05-31 16:39
< >
分享
所有回答(2)
0

hql = "FROM Delivery “

if(delivery.getWorkerNub()!=""){

hsql+=" WHERE delivery.workerNub = '"
 + delivery.getWorkerNub();

}

思路就是这样的,字符串拼接。拼接的时候,要注意什么时候需要where,什么时候需要空格。

悟行 | 园豆:12240 (专家六级) | 2012-05-31 16:56

恩,刚想到这个方法

支持(0) 反对(0) finly | 园豆:3 (初学一级) | 2012-05-31 16:59

如果判断是否为空,然后追加。但是如何确定and的位置,就是我现在有四个字段哦

支持(0) 反对(0) finly | 园豆:3 (初学一级) | 2012-05-31 17:35
0

要不用Criteria吧

Criteria criteria = session.createCriteria(Delivery.class);

if(null != delivery.getWorkerNub() && !delivery.getWorkerNub().equals(""))){

  criteria.add(Restrictions.eq("delivery.workerNub",delivery.getWorkerNub()));

}

。。。。。

criteria.list();

lily white | 园豆:202 (菜鸟二级) | 2012-06-13 21:17

如果多个是不是多条 语句啊

支持(0) 反对(0) finly | 园豆:3 (初学一级) | 2012-06-13 21:54

@finly: 是的,每个条件都判断一下值为空吗,不为空就加入到criteria中,就是一个条件一条if语句,这样就不用拼hql的时候来判断怎么加where和and

支持(0) 反对(0) lily white | 园豆:202 (菜鸟二级) | 2012-06-14 10:51
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册