2

次のようなコンマ区切りの文字列値を持つデータベーステーブルの列があります。

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)));
    }
4

1 に答える 1