1
如何queryDsl
LIKE和CONCAT在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("',%'"))
))
嗨,我得到了'方法concat(表达式)在StringExpression类型中不适用于参数(NumberPath )' –
Youssef
@Youssef:well'concat()'对数字没有意义。 “LIKE”对数字也没有意义。不在QueryDSL中,不在SQL中。你可能需要一些演员。你不可能在'ancestor'列中存储逗号分隔的值列表吗?这是一个非常糟糕的数据库设计。 –
是的我在做:D但为什么它是一个糟糕的设计..我怎么能做一个分层的查询,返回给定的ID或将返回给定的ID的所有祖先的查询的所有后代? – Youssef