We did notice the ExpressionFactory and actually use it to generate the expressions :)
This is indeed an interesting discussion, especially for cayenne noobs like me. Atli Páll Hafsteinsson [email protected] On Fri, Sep 16, 2011 at 1:22 PM, Michael Gentry <[email protected]> wrote: > Hi Atli, > > Using ExpressionFactory, you can avoid a lot of the text-based queries > by using the constants generated by Cayenne Modeler in the superclass. > Something like: > > Expression exp = ExpressionFactory.matchExp(User.USERNAME_PROPERTY, username); > > In 3.1, a static makePath() method has been added to CayenneDataObject > to make it easier to use the constants with relationships: > > Expression exp = > ExpressionFactory.matchExp(makePath(User.ROLE_PROPERTY, > Role.NAME_PROPERTY), Role.ADMIN); > > makePath() joins the strings you pass it with a "." so you end up with > something like "role.name", but it is using Java constants so you > can't introduce typos. > > I'm not trying to distract from the current (and interesting) > conversation, just pointing out ExpressionFactory if you missed it. > > Thanks, > > mrg > > > 2011/9/16 Atli Páll Hafsteinsson <[email protected]>: >> For me a big part of the reason for implementing this is to get rid of >> text based queries as they cannot be verified and therefore error >> prone. Plus you have to know more about the data structure. >
