You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ibatis.apache.org by "Kai Grabfelder (JIRA)" <ib...@incubator.apache.org> on 2009/05/12 20:07:45 UTC

[jira] Commented: (IBATIS-596) Null-References for sub selects with lazy loading

    [ https://issues.apache.org/jira/browse/IBATIS-596?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12708538#action_12708538 ] 

Kai Grabfelder commented on IBATIS-596:
---------------------------------------

Sounds like an interesting feature. Could you add a testcase against the current trunk? An updated iBATIS-SqlMaps-2_en.sxw file documenting your change would also be great.

> 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
>             Fix For: 2.3.5
>
>         Attachments: null-proxy.patch
>
>
> 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.