java HQL中的Like %运算符

nbysray5  于 2022-12-10  发布在  Java
关注(0)|答案(2)|浏览(215)

我正在尝试运行下面的代码,但遇到错误。

public MdFeedHandOff getFeedByHandOff(Integer handoff, Integer csiID){
        logger.error("*************getFeedByHandOff(): handoff value is "+handoff);
        String hql = "FROM MdFeedHandOff a WHERE a.handoff = :handoff  and  a.active  in ('A','I') and to_char(a.handoff) like :csiID%";
        Map<String, Object> param = new HashMap<String, Object>();
        param.put("handoff", handoff);
        List<MdFeedHandOff> batchJobList = searchForList(hql, param);
        return batchJobList.isEmpty()?null:batchJobList.get(0);
    }

我想在hql中使用like % operator。请帮助我。我也试过下面这行,但它不起作用。

String hql = "FROM MdFeedHandOff a WHERE a.handoff = :handoff  and  a.active  in ('A','I') and to_char(a.handoff) like :csiID" + "%";
pvabu6sv

pvabu6sv1#

您应该只在查询中输入:csid参数名称,并在您设置的参数中添加%通配符。此外,您似乎没有在paramsMap中设置csid。

查询

FROM MdFeedHandOff a WHERE a.handoff = :handoff 
     and  a.active  in ('A','I') and to_char(a.handoff) like :csiID";

参数

Map<String, Object> param = new HashMap<String, Object>();
param.put("handoff", handoff);
param.put("csiID", csiId.toString()+"%");
laik7k3q

laik7k3q2#

请尝试以下操作:

String temp = "select p from Product as p where p.model like concat('%',:name,'%')";
        Session session = sessionFactory.getCurrentSession();
        Query<Product> query = session.createQuery(temp);
        query.setParameter("name", name);

相关问题