Another API idea that I just had while analyzing boilerplate code of the client Cayenne apps. An argument to Property.like(..) (or second argument to ExpressionFactory.likeExp(..)) requires a full pattern to match against. So people would often write their own utility code to wrap a String in "%" signs. Cayenne can easily take care of this via the following methods:
Property.contains(string); // same as Property.like("%" + string + "%"); Property.startsWith(string); // same as Property.like(string + "%"); Property.endsWith(string); // same as Property.like("%" + string); In addition to saving the user from String concatenation, these new methods can do proper symbol escaping, making "like" much safer to use. Andrus