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