Null-References for sub selects with lazy loading
-------------------------------------------------

                 Key: IBATIS-596
                 URL: https://issues.apache.org/jira/browse/IBATIS-596
             Project: iBatis for Java
          Issue Type: Improvement
          Components: SQL Maps
    Affects Versions: 2.3.4
            Reporter: Stefan Gmeiner


We are using the iBatis enhanced (cglib) proxy for lazy loading our sub-select 
bean references.
Unfortunately if a reference is null iBatis creates a proxy with
null content. This makes using lazy loading less transparent to clients as they 
are required
to execute further checks to see if the returned object is null.

Hence we are suggesting a simple solution which is attached as a patch:

A proxy for a lazy loaded object is now only created if the foreign key is 
non-null.
When using the curly braces syntax (parameter map) a postfix '?' is required to 
activate
the new lazy loading otherwise the existing strategy is used. This allows for 
the possibility
of subselects requiring a null value as foreign key.

Example:
<result property="jobs" column="job_pk" select="selectJob"/>
This will return null if job_pk is null and a proxy for the job is job_pk is 
not null.

<result property="jobs" column="{transportIdentifier=job_pk}" 
select="selectJob"/>
This will always return a proxy object irrespective of the job_pk value.

<result property="jobs" column="{transportIdentifier=job_pk?}" 
select="selectJob"/>
This will return null if job_pk is null and a proxy for the job is job_pk is 
not null.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to