hibernate sql语句参数为null时,如何处理
1个回答
展开全部
目的:删除满足条件的数据。
出现问题:参数为null时,程序出现异常。
问题描述:之前代码如下:
sql="delete table where pId=? and sId=?"; query.setParameter(0, pId); query.setParameter(1, sId); 现在遇到一个问题,就是如果参数传一个null的时候,hibernate不会将sql转换成is null,程序将会出现错误,所以修改成如下:
//两个参数均不是主键 public void deleteTable(Long sId, Long pId) { String sql = "delete table where 1=1"; if (null == pId) { sql = sql + " and pIdis null"; } else { sql = sql + " and pId=?"; } if (null == sId) { sql = sql + " and sIdis null"; } else { sql = sql + " and sId=?"; } Query query = getSession().createQuery(sql); //这样判断简直让人崩溃,有啥好的处理方式? if (null != pId && null == sId) { query.setParameter(0, pId); } if (null != pId && null != sId) { query.setParameter(0, pId).setParameter(1, pId); } if (null == pId && null != sId) { query.setParameter(0, pId); } query.executeUpdate(); } 这样是可以实现业务逻辑的,但是显然程序很笨重,不知到hibernate本身有没有灵活、优雅的方式解决这个问题?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询