次のようなコンマ区切りの文字列値を持つデータベーステーブルの列があります。
id mycolumn
-- --------
1 A
2 A, B
3 A, B, C
これは古いカスタマイザー データベースであるため、変更できません。
mycolumn
文字列のリストに対してチェックしたい:
リスト['A']に対する最初のクエリは、レコード1を返す必要があります
リスト['A','B']に対する 2 番目のクエリは、レコード1,2を返す必要があります
リスト['A','B','C']に対する 3 番目のクエリは、レコード1,2,3を返す必要があります
SQL (postgres) ステートメントと、さらに と を使用した Java 実装が必要javax.persistence.criteria.CriteriaBuilder
ですjavax.persistence.criteria.Predicate
。
ヒントをありがとう、アン
編集: javax.persitence 部分の私のソリューション:
public static void arrayContains(final CriteriaBuilder cb, final List<Predicate> where,
final Expression<String> expression, final String values) {
Expression<String> expressionValues = cb.function("string_to_array", String.class, cb.literal(values), cb.literal(", "));
Expression<String> expressionDb = cb.function("string_to_array", String.class, expression, cb.literal(", "));
where.add(cb.isTrue(cb.function("arraycontains", Boolean.class, expressionValues, expressionDb)));
}