我已完成了工作,但其相當繁瑣:
results?.eachWithIndex { output, i->
if (i>0) {
sb.append(" or ")
}
sb.append(" ((dbres.Field like (:myVariablesA${i})) or (dbres.Field like (:myVariablesB${i})) or (dbres.Field like (:myVariablesC${i})) or dbres.Field=:myVariable${i})")
//capture within csv so aa,val,bb
myParams."myVariablesA${i}"='%,'+output+',%'
//capture as last element: aa,val
myParams."myVariablesB${i}"='%,'+output
//capture it as first element val,aa
myParams."myVariablesC${i}"=output+',%'
//finally capture it if its not a csv and its a physical set value
myParams."myVariable${i}"=output
}
這是常規,並追加到一個StringBuilder(SB)元素。總之,csv字符串字段的%,id,%本身太強大了。通過後自行捕捉,可以在實際的字符串存在的所有變化
希望它能別人
你使用Hibernate模板,這樣做有助於將所有的變化逗號前..? – Dileep
我正在使用Hibernate,Criteria和Criterion來構建HQL。 – SMHJamali