QueryDsl 中的 LIKE 和 CONCAT

You*_*sef 5 querydsl

如何编写此查询 queryDsl

SELECT a.id, 
(SELECT count(*) FROM ancestors_table t where t.ancestors LIKE CONCAT('%,',a.id,',%') )
  FROM ancestors_table a; 
Run Code Online (Sandbox Code Playgroud)

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

解决方案

where(t.ancestors.like(
                Expressions.stringTemplate("'%,'")
               .concat(Expressions.stringTemplate("{0}" , a.id ))
               .concat(Expressions.stringTemplate("',%'")) 
))
Run Code Online (Sandbox Code Playgroud)

a_h*_*ame 5

不完全确定,但像这样:

where(t.ancestors.like(Expressions.asString("%").concat(a.id).concat("%")))
Run Code Online (Sandbox Code Playgroud)

如果a.id是数字,则需要将其转换为字符串:

where(t.ancestors.like(Expressions.asString("%").concat(a.id.stringValue()).concat("%")))
Run Code Online (Sandbox Code Playgroud)