Differences between revisions 1 and 2
Revision 1 as of 2004-11-18 10:32:54
Size: 1207
Editor: ua
Comment:
Revision 2 as of 2004-11-18 10:33:08
Size: 1213
Editor: ua
Comment:
Deletions are marked like this. Additions are marked like this.
Line 30: Line 30:
 if (fkCols.length == 1 && itemFkCols.length == 1) {{{ if (fkCols.length == 1 && itemFkCols.length == 1) }}}

org.apache.ojb.broker.accesslayer.MtoNCollectionPrefetcher bug

in method

    private Criteria buildPrefetchCriteria(Collection ids, String[] fkCols, String[] itemFkCols,
            FieldDescriptor[] itemPkFields)
    {
        if (fkCols.length == 1) //bug is here
        {
            return buildPrefetchCriteriaSingleKey(ids, fkCols[0], itemFkCols[0], itemPkFields[0]); //only first item's foreign key passed
        }
        else
        {
            return buildPrefetchCriteriaMultipleKeys(ids, fkCols, itemFkCols, itemPkFields);
        }

    }

assumption that if parent table has the only foreign key then item table has the only FK too is incorrect.

<collection-descriptor name="recipients" element-class-ref="nVerge.commons.User"
auto-delete="link" auto-retrieve="true" auto-update="link"
indirection-table="hot_folder_recipients">
 <fk-pointing-to-this-class column="hot_folder_id"/>
 <fk-pointing-to-element-class column="user_login"/>
 <fk-pointing-to-element-class column="user_network_id"/> <!-- this FK is not put into where criteria -->
</collection-descriptor>

Quickfix for this is  if (fkCols.length == 1 && itemFkCols.length == 1) 

Bugs (last edited 2009-09-20 22:56:16 by localhost)