a、b两个个相关联的表(a中存取的是b的对象),我现在要模糊查询数据在a表,where条件是要从b表中查询某个数据,
hql是这样写的吧 ...where a.b.xx='xx',但问题来了,如果在a表中b这个字段是空值,那么hibern生成的sql语句还是对a 和b表关联,这样条件中就有个不成立的条件, where a.b 这是等于空,但查询语句还是a.b.xx=“xx”,这样什么都查不出了,不知道我说明白了没,小弟语言能力不强啊,先谢谢各位帮忙的大哥大姐
hql是这样写的吧 ...where a.b.xx='xx',但问题来了,如果在a表中b这个字段是空值,那么hibern生成的sql语句还是对a 和b表关联,这样条件中就有个不成立的条件, where a.b 这是等于空,但查询语句还是a.b.xx=“xx”,这样什么都查不出了,不知道我说明白了没,小弟语言能力不强啊,先谢谢各位帮忙的大哥大姐
+ "%' or paveStruct.endNum like '%" + queryString
+ "%' or paveStruct.lineCode.lxdm like '%" + queryString
+ "%' or paveStruct.lineCode.lxqc like '%" + queryString
+ "%' or paveStruct.upFaceMaterial.objname like '%" + queryString
+ "%' or paveStruct.midFaceMaterial.objname like '%" + queryString 上边的 paveStruct 就是那个a表,upFaceMaterial是b表,模糊查询中为了写全,不管他是否为空,都得写上,所以hibernate会自动关联的,我开始在hibernate的xml配置中写上的not-found="ignore"参数,但问题还在,还是查不出b对象为空时的数据。
+ "%' or paveStruct.endNum like '%" + queryString
+ "%' or paveStruct.lineCode.lxdm like '%" + queryString
+ "%' or paveStruct.lineCode.lxqc like '%" + queryString
+ "%' or paveStruct.upFaceMaterial.objname like '%" + queryString
+ "%' or paveStruct.midFaceMaterial.objname like '%" + queryString 上边的 paveStruct 就是那个a表,upFaceMaterial是b表,模糊查询中为了写全,不管他是否为空,都得写上,所以hibernate会自动关联的,我开始在hibernate的xml配置中写上的not-found="ignore"参数,但问题还在,还是查不出b对象为空时的数据。
谢谢
a表和b表确定是关联的,是这样的,hql你这样写——from a表 where a表.b表.字段=“xx”,那么hibernate就会自动根据 where 后的 “a表.b表.字段” 给你在句子中关联a,b表,这样——from a表 ,b表 where a表.b表=b表.id and a表.b表.字段=“xx”,我要做模糊查询,所有的字段都得预先写在hql语句中,但如果a表中有条数据b字段没有,那么这时hibernate生成的这个sql是不成立的“a表.b表=b表.id ”,你得控制着这个条件,不然查不出来,怎么控制?
+ "%' or paveStruct.endNum like '%" + queryString
+ "%' or paveStruct.lineCode.lxdm like '%" + queryString
+ "%' or paveStruct.lineCode.lxqc like '%" + queryString
+ "%' or paveStruct.upFaceMaterial.objname like '%" + queryString
+ "%' or paveStruct.upFaceMaterial is null" +
+ "%' or paveStruct.midFaceMaterial.objname like '%" + queryString
楼主不是想的到a表中包括b这个字段为空时的所有数据吗?????