[
https://issues.apache.org/jira/browse/CAY-1241?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12721741#action_12721741
]
Laurentiu Cocanu commented on CAY-1241:
---------------------------------------
What about this new version?
/**
* Creates an expression that matches the primary key of object in
<code>ObjectId</code>'s <code>IdSnapshot</code> for the argument
<code>object</code>.
*/
public static Expression matchObject(Persistent object) {
ObjectId obid = object.getObjectId();
Map<String, ?> map = obid.getIdSnapshot();
List<Expression> pairs = new ArrayList<Expression>(map.size());
for (Map.Entry<String, ?> entry : map.entrySet()) {
Expression exp = expressionOfType(Expression.AND);
exp.setOperand(0, new ASTObjPath(entry.getKey()));
exp.setOperand(1, wrapPathOperand(entry.getValue()));
pairs.add(exp);
}
return joinExp(Expression.AND, pairs);
}
/**
* Creates an expression that matches any of the objects contained in the
list <code>objects</code>
*/
public static Expression matchObjects(List<Persistent> objects) {
List<Expression> pairs = new
ArrayList<Expression>(objects.size());
for (Persistent object : objects) {
pairs.add(matchObject(object));
}
return joinExp(Expression.OR, pairs);
}
Soon I'll come with some unit tests too.
> Add method to ExpressionFactory to match against the primary key of an object
> or list of objects
> ------------------------------------------------------------------------------------------------
>
> Key: CAY-1241
> URL: https://issues.apache.org/jira/browse/CAY-1241
> Project: Cayenne
> Issue Type: Improvement
> Components: Cayenne Core Library
> Affects Versions: 3.0M6
> Reporter: Øyvind Harboe
> Attachments: patch.txt
>
>
> It would be helpful to have a method in ExpressionFactory that build an
> expression using matchDbExp() to match an object's primary keys.
> This can be helpful in excluding a single or list of known objects from the
> result of a query.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.