Yeah, things can be simplified in case of relationships (i.e. qualifiers matching a single object). A generic solution that works with an arbitrary qualifier will be substantially more involved.

Andrus


On May 18, 2006, at 7:05 PM, Mike Kienenberger wrote:

On 5/18/06, Mike Kienenberger <[EMAIL PROTECTED]> wrote:
This is my first-pass at solving the problem at the application level

Cleaned up version that can go in the Base DataObject class.

   protected List getToManyRelationshipTheHardWay(String
targetPrimaryKey, String joinTable, String sourcePrimaryKey, Class
targetClass)
   {
       String sql = "select distinct(" + targetPrimaryKey + ") as ID
from " + joinTable + " where " + sourcePrimaryKey + " = $PRIMARY_KEY";

       // set parameters and run it...
       Map parameters = new HashMap();
       parameters.put("PRIMARY_KEY", getPrimaryKey());
       SQLTemplate rawSelect = new SQLTemplate(getClass(), sql, true);
       rawSelect.setParameters(parameters);
       rawSelect.setFetchingDataRows(true);
       List distinctFKList = getDataContext().performQuery(rawSelect);

       List toManyList = new ArrayList(distinctFKList.size());
       Iterator foreignKeyIterator = distinctFKList.iterator();
       while (foreignKeyIterator.hasNext())
       {
           DataRow dataRow = (DataRow) foreignKeyIterator.next();
           Object primaryKey = (Object) dataRow.get("ID");
           if (null == primaryKey)  continue;

toManyList.add(DataObjectUtils.objectForPK(getDataContext (),
targetClass, primaryKey));
       }

       return toManyList;
   }


Reply via email to