I'm not 100% certain why you would want to do that (sometimes you need to know 
when things are null).  I do agree it can complicate code (I really miss 
Objective-C's handling).  One thing EOF did was have an EONull class to 
represent null objects.  You could fudge this sort of behavior with a custom 
common superclass (that all the _Classes inherit from), but it wouldn't be 
quite the same as if Cayenne had support for it.  This might actually be 
enhancement worthy, but would probably break lots of things.

/dev/mrg



-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Øyvind Harboe
Sent: Thursday, August 03, 2006 4:03 PM
To: [email protected]
Subject: Null pointer exceptions and database null


Is there a way to tell Cayenne to return some other value than null
when the database contains null?

E.g. for String I want an empty string instead of null, for Integer I
want 0 instead of null, etc.

Also, I want Cayenne not to modify the database unecessarily, e.g. if
Cayenne returns "" when the database contains NULL  and I write back
"" to the database, I don't want Cayenne to write an empty string to
the database, but leave the database unchanged, yet there needs to be
a way to set such database null strings to "".

My personal favourite solution to null pointer problem is
polymorphism. Create a subclass which handles the "null", "empty",
case, etc. One annoying thing about null pointers is that they are
typeless. I would have created a NullString subclass to String in some
cases, except String is final. BigDecimal is not final, so the trick
could work there. Since I'm already on my hobbyhorse: null pointers
are a plague. Much too easy to misuse. Look at the number of bug
reports in e.g. Eclipse that are NPE's(ca. 15000 out of 150000) and
the number of != null or == null checks in Eclipse is just staggering.
It vastly complicates the code. Oh well. :-)

-- 
Øyvind Harboe
http://www.zylin.com

Reply via email to