Uploaded image for project: 'Cayenne'
  1. Cayenne
  2. CAY-560

Add support for outer joins

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • 3.0M4, 3.0
    • Core Library
    • None

    Description

      Currently outer joins are not supported.

      See thread:

      http://objectstyle.org/cayenne/lists/cayenne-user/2006/05/0165.html

      // This Java code will result in the SQL query immediately below...
      SelectQuery query1=new SelectQuery(ElcRole.class);
      query1.setQualifier(ExpressionFactory.matchExp(ElcRole.ELC_ROLEMEMBER_ARRAY_PROPERTY + "." + ElcRolemember.TO_SYS_USER_PROPERTY, getSysUser()).
      orExp(ExpressionFactory.matchExp(ElcRole.TO_SYS_USER_PROPERTY, getSysUser())));
      List l=context.performQuery(query1);

      Generates =>

      SELECT DISTINCT t0.ELCROLE_NAME, t0.ELCROLE_ID, t0.SYSUSER_ID
      FROM ELC_ROLE t0 LEFT OUTER JOIN
      ELC_ROLEMEMBER t1 ON t0.ELCROLE_ID = t1.ELCROLE_ID
      WHERE (t1.SYSUSER_ID = 'BD93F348-8C02-4742-BA97-2456E5CD3881') OR
      (t0.SYSUSER_ID = 'BD93F348-8C02-4742-BA97-2456E5CD3881')

      But should have generated =>

      SELECT DISTINCT t0.ELCROLE_NAME, t0.ELCROLE_ID, t0.SYSUSER_ID
      FROM ELC_ROLE t0 LEFT OUTER JOIN
      ELC_ROLEMEMBER t1 ON t0.ELCROLE_ID = t1.ELCROLE_ID
      WHERE (t1.SYSUSER_ID = 'BD93F348-8C02-4742-BA97-2456E5CD3881') OR
      (t0.SYSUSER_ID = 'BD93F348-8C02-4742-BA97-2456E5CD3881')

      Attachments

        1. 1.2-outerjoin-null-2006-09-05-01.txt
          134 kB
          Mike Kienenberger
        2. cayenne-2.0-patch-outerjoin-null-audit-customexp.txt
          269 kB
          Mike Kienenberger

        Issue Links

          Activity

            People

              mkienenb Mike Kienenberger
              oharboe Øyvind Harboe
              Votes:
              3 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: