+1. I saw it used on one project and it was a nice concept. Andrus
On Jul 11, 2012, at 7:30 AM, John Huss (JIRA) wrote: > John Huss created CAY-1724: > ------------------------------ > > Summary: Add 'Property' class for easier and better Expression > creation > Key: CAY-1724 > URL: https://issues.apache.org/jira/browse/CAY-1724 > Project: Cayenne > Issue Type: Improvement > Components: Core Library > Affects Versions: 3.2M1 > Reporter: John Huss > Priority: Minor > Attachments: Property.java > > Project Wonder (WebObjects) has a class which is basically just a wrapper > around an attribute or relationship name that gives you a way to create > Expressions in type-safe manner and with minimal effort. Also sort orderings > can be easily generated. In Wonder, these "property" objects are part of the > entity template so they are generated automatically. > > So for example: > > public class _Artist extends CayenneDataObject { > public static final Property<String> NAME = new > Property<String>(NAME_PROPERTY); > ... > } > > Then client code can do things like: > > new SelectQuery(Artist.class, NAME.eq("Pablo").andExp(AGE.gt(40)), > AGE.descs()); > > This would select all artists with name equal to Pablo and age greater than > 40 and order them in descending age order. > > This concept has been proven to work incredibly well with WebObjects. It's > almost as readable as using plain strings but has complete compile-time > checking for the property name and the type of the objects it is compared > with. > > A complete implementation is attached. It's very simple since > ExpressionFactory does the work. If this is accepted, it would make sense to > modify the built-in entity templates to generate Property constants for all > of the properties. > > -- > This message is automatically generated by JIRA. > If you think it was sent incorrectly, please contact your JIRA > administrators: > https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa > For more information on JIRA, see: http://www.atlassian.com/software/jira > > >