0

Apache Cayenneを使用して、属性値のコレクションがあるときに DB への反復呼び出しを回避する方法を見つけようとしています。

タイプStringPersonの属性を持つ永続オブジェクトがあるとします。の名前を含むリストがある場合、リストを反復処理して順番に取得するのではなく、単一のDB 呼び出しを許可する式を生成したいと考えています。namePersonPerson

これは実際には存在しませんが、次のようなものが欲しいです:

List<String> names = ...;
ExpressionFactory.orLikeExp(Person.NAME_PROPERTY, names);
4

1 に答える 1

2

ExpressionFactory.join(..) を使用できます。

List<Expression> pairs = new ArrayList<>(names.size());
for(String name : names) {
    // use an expression appropriate for comparison... 
    // "like" in this example, but can be "equals", etc.
    pairs.add(ExpressionFactory.likeExp(Person.NAME_PROPERTY, name));
}

Expression e = ExpressionFactory.joinExp(Expression.OR, pairs);
于 2014-11-10T11:39:01.170 に答える