Thanks Peter
We are doing something similar now, was just wondering if this could be
avoided by handling it in IBatis.
Thanks
Ka-Wai
>>> Peter Mills <[EMAIL PROTECTED]> 01/22/07 4:24 PM >>>
Hi Ka-Wai,
I find the easiest way to do that kind of mapping is in the domain
object, itself.
public class Customer {
SubObject _subObject = SubObject.Empty;
public SubObject MySubObject {
get { return _subObject; }
set {
if (null == value)
_subObject = SubObject.Empty;
else
_subObject = value;
}
}
}
It also protects you from accidentally setting the property null,
somewhere else in your code.
Cheers,
Peter
Ka-Wai Chan wrote:
> Hello
>
> I have a 1 to 0 or 1 relationship mapped as follow
>
> <result property="SubObject" column="sub_object_id"
> select="SelectBySubtObjectId"/>
>
> This works fine, but what we are trying to implement is the
NullObject
> pattern in which a null value is mapped to a specific null object
> instead of null.
>
> ie. In Parent object, I have a reference called SubObject. Ibatis
> right now will set that reference to null when a database value of
> null is encountered, what I want is for Ibatis to set that value to
> SubObject.NULL instead.
>
> Is this possible? What is the proper way of doing this?
>
> I have tried implementing ITypeHandlerCallback by doing the following
> but doesn't work. When is the NullValue getter called?
>
> public void SetParameter(IParameterSetter setter, object
> parameter)
> {
> }
>
> public object GetResult(IResultGetter getter)
> {
> return getter.Value;
> }
>
> public object ValueOf(string s)
> {
> return s;
> }
>
> public object NullValue
> {
> get { return SubObject.NULL; }
> }
>
> Thanks,
> Ka-Wai