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