Apache Cayenne获得收藏表达

时间:2014-11-10 10:23:25

标签: expression apache-cayenne

使用Apache Cayenne当我有一个属性值集合时,我试图弄清楚如何避免对数据库进行迭代调用。

假设我们有一个持久对象Person,其属性name的类型为字符串。如果我有一个包含Person名称的列表,我想生成一个允许单个数据库调用的表达式,而不是遍历列表并依次获取每个Person

这实际上并不存在,但我希望这样:

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

1 个答案:

答案 0 :(得分: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);