Hibernate HQL IN子句仅匹配列表的第一项

时间:2013-08-20 03:54:20

标签: hibernate hql

问题:hql查询的IN子句只匹配逗号分隔列表的第一项!

HQL查询如下:from News where 93 IN (pictureIds)

新闻实体是:

public class News {
  String id;
  String pictureIds; // comma separated list of pictureIds
}

注意:如果我更改HQL查询并对pict​​ureIds进行硬编码,其结果是正确的!

如何更改查询以解决问题?

3 个答案:

答案 0 :(得分:1)

试试这个:

from News where pictureIds LIKE '%,93,%'

逗号添加到开头和结尾。

答案 1 :(得分:0)

这样做。

Query query = getSession().createQuery("Select * from News where pictureIds In (:List)")  
             .setParameterList("List",ListValues);

查看here了解HQL使用的基础知识。

答案 2 :(得分:0)

我已经让它工作了,但它相当乏味:

 geom_barw<-function(DF,x,y,fill,stat){
    require(ggplot2)

    x<-substitute(x)
    y<-substitute(y)
    fill<-substitute(fill)

    p<- ggplot(DF,aes_string(x=x,y=y,fill=fill))
    p<- p + geom_bar(stat=stat)
    return(p)
}

这是groovy并附加到StringBuilder(sb)元素。简而言之,对于csv字符串字段,%,id,%本身就太强了。通过在之前和之后添加所有变体逗号来捕获实际字符串中可能存在的所有变体

希望它可以帮助别人