QueryDsl中的LIKE和CONCAT

时间:2016-04-28 01:27:42

标签: querydsl

如何在queryDsl

中编写此查询
SELECT a.id, 
(SELECT count(*) FROM ancestors_table t where t.ancestors LIKE CONCAT('%,',a.id,',%') )
  FROM ancestors_table a; 

我与LIKE CONCAT('%,',a.id,',%')部分斗争。

解决方案

where(t.ancestors.like(
                Expressions.stringTemplate("'%,'")
               .concat(Expressions.stringTemplate("{0}" , a.id ))
               .concat(Expressions.stringTemplate("',%'")) 
))

1 个答案:

答案 0 :(得分:4)

不完全确定,但是这样的事情:

where(t.ancestors.like(Expressions.asString("%").concat(a.id).concat("%")))

如果a.id是一个数字,那么您需要将其转换为字符串:

where(t.ancestors.like(Expressions.asString("%").concat(a.id.stringValue()).concat("%")))