2016-04-28 6 views
1

インチLIKEとCONCAT QueryDsl

SOLUTION

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

答えて

0

完全に確認してください、しかし、このようなものはありません:

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

a.idが数値であるなら、あなたは文字列に変換する必要があります。

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

こんにちは私はこれを取得 'メソッドの連結(式(NumberPath ) ' – Youssef

+0

@Youssef:よく' concat() 'は数値には意味がありません。そして、「好き」は数字にも意味をなさない。 QueryDSLではなく、SQLではありません。おそらくそれのためにいくつかのキャストが必要です。 'ancestor'カラムにコンマで区切られた値のリストを格納しているのではないでしょうか?それは本当に悪いデータベース設計です。 –

+0

はい私はそれをやっている:しかし、なぜそれは悪いデザインです...どのように私は与えられたIDのすべての子孫または指定されたIDのすべての祖先を返すクエリを返す階層的なクエリを作ることができますか? – Youssef