You'd just want to write a matching readProperty function to reverse the translation to address your first concern.
I spoke too soon. How do I in readProperty() know the type of the null I'll be translating to an empty string or Integer 0? (I expect that not to be super hard as Cayenne has this knowledge somewhere in its structures) Tapestry & JSF have the same issue that you pointed out that writing the same value should not cause an update to the database. -- Øyvind Harboe http://www.zylin.com
