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.
