This is my first ever post to a newsgroup, so I hope I get it right.

I've got the basics of OJB down, but now I am attempting to do some fairly
nested joins and OJB is not producting the SQL

statements I know I need (i.e. I've written them manually before).

This is about what I need:

SELECT DISTINCT IMENU.SYSTEM_NUMBER, IMENU.LAST_UPDATED,
IMENU.LAST_UPDATED_BY, IMENU.NAME, IMENU.DISABLED
FROM (((ASSOC_IGROUP_IUSER INNER JOIN IGROUP ON
ASSOC_IGROUP_IUSER.GROUP_SYSNO = IGROUP.SYSTEM_NUMBER) INNER JOIN

ASSOC_IGROUP_IOBJECT ON IGROUP.SYSTEM_NUMBER =
ASSOC_IGROUP_IOBJECT.GROUP_SYSNO) INNER JOIN IOBJECT ON

ASSOC_IGROUP_IOBJECT.OBJECT_SYSNO = IOBJECT.SYSTEM_NUMBER) INNER JOIN
(ASSOC_IOBJECT_IMENU INNER JOIN IMENU ON

ASSOC_IOBJECT_IMENU.MENU_SYSNO = IMENU.SYSTEM_NUMBER) ON
IOBJECT.SYSTEM_NUMBER = ASSOC_IOBJECT_IMENU.OBJECT_SYSNO
WHERE ASSOC_IGROUP_IUSER.USER_SYSNO='24';

Yeah I know, pretty messed up, but I am a newbie.  OJB is giving me:

SELECT DISTINCT
A0.DISABLED,A0.NAME,A0.SYSTEM_NUMBER,A0.LAST_UPDATED_BY,A0.LAST_UPDATED
FROM IMCOP.IMENU A0,ASSOC_IOBJECT_IMENU A1,IMCOP.IOBJECT
A2,ASSOC_IGROUP_IOBJECT A3,IMCOP.IGROUP A4,IMCOP.ASSOC_IGROUP_IUSER

A5
WHERE A4.SYSTEM_NUMBER=A5.USER_SYSNO AND A3.GROUP_SYSNO=A4.SYSTEM_NUMBER AND
A2.SYSTEM_NUMBER=A3.OBJECT_SYSNO AND

A1.OBJECT_SYSNO=A2.SYSTEM_NUMBER AND A0.SYSTEM_NUMBER=A1.MENU_SYSNO AND
(A5.USER_SYSNO =  '24' );

To produce this I'm using this code:

public static String getUsersMenus(User user) throws Exception {

  PersistenceBroker broker = null;
  broker = PersistenceBrokerFactory.defaultPersistenceBroker();

  Criteria criteria = new Criteria();


criteria.addEqualTo("systemNumber.memberOfMenus.memberObjects.memberOfGroups
.memberUsers.userSystemNumber",user.getSystemNumb

er());

  Query query = QueryFactory.newQuery(Menu.class, criteria, true);
  Collection leafMenus = broker.getCollectionByQuery(query);

  ...
}

This is my repository_user.xml (omitting non-important fields):

<!-- Definitions for User object-->
<class-descriptor
  class="mil.army.ima.ser.imcop.user.User"
  table="IMCOP.IUSER">
  <field-descriptor
    name="systemNumber"
    column="SYSTEM_NUMBER"
    jdbc-type="INTEGER"
    primarykey="true"
    autoincrement="true"
    indexed="true" />
  ...
  <collection-descriptor
    name="memberOfGroups"
    element-class-ref="mil.army.ima.ser.imcop.associations.UserRole"
    proxy="true">
    <inverse-foreignkey field-ref="groupSystemNumber" />
  </collection-descriptor>
  <collection-descriptor
    name="favoriteObjects"
    element-class-ref="mil.army.ima.ser.imcop.object.Object"
    indirection-table="IFAVORITES"
    proxy="true">
    <fk-pointing-to-this-class column="USER_SYSNO" />
    <fk-pointing-to-element-class column="OBJECT_SYSNO" />
  </collection-descriptor>
</class-descriptor>

<!-- Definitions for associations UserRole object
     This is a table for Manual Decomp -->

<class-descriptor
  class="mil.army.ima.ser.imcop.associations.UserRole"
  table="IMCOP.ASSOC_IGROUP_IUSER">
  <field-descriptor
    name="userSystemNumber"
    column="USER_SYSNO"
    jdbc-type="INTEGER"
   primarykey="true" />
  <field-descriptor
    name="groupSystemNumber"
    column="GROUP_SYSNO"
    jdbc-type="INTEGER"
    primarykey="true" />
  <field-descriptor
    name="administrator"
    column="ADMINISTRATOR"
    jdbc-type="BIT" />
  <reference-descriptor
    name="user"
    class-ref="mil.army.ima.ser.imcop.user.User"
    proxy="true">
    <foreignkey field-ref="userSystemNumber" />
  </reference-descriptor>
  <reference-descriptor
    name="group"
    class-ref="mil.army.ima.ser.imcop.group.Group"
    proxy="true">
    <foreignkey field-ref="groupSystemNumber" />
  </reference-descriptor>
</class-descriptor>

<!-- Definitions for Group object-->
<class-descriptor
  class="mil.army.ima.ser.imcop.group.Group"
  table="IMCOP.IGROUP">
  <field-descriptor
    name="systemNumber"
    column="SYSTEM_NUMBER"
    jdbc-type="INTEGER"
    primarykey="true"
    autoincrement="true"
    indexed="true" />
  ...
  <collection-descriptor
    name="memberUsers"
    element-class-ref="mil.army.ima.ser.imcop.associations.UserRole"
    proxy="true">
    <inverse-foreignkey field-ref="userSystemNumber" />
  </collection-descriptor>
  <collection-descriptor
    name="memberObjects"
    element-class-ref="mil.army.ima.ser.imcop.object.Object"
    indirection-table="ASSOC_IGROUP_IOBJECT"
    proxy="true">
    <fk-pointing-to-this-class column="GROUP_SYSNO" />
    <fk-pointing-to-element-class column="OBJECT_SYSNO" />
  </collection-descriptor>
</class-descriptor>

<!-- Definitions for Object object-->
<class-descriptor
  class="mil.army.ima.ser.imcop.object.Object"
  table="IMCOP.IOBJECT">
  <field-descriptor
    name="systemNumber"
    column="SYSTEM_NUMBER"
    jdbc-type="INTEGER"
    primarykey="true"
    autoincrement="true"
    indexed="true" />
    jdbc-type="VARCHAR" />
  ...
  <collection-descriptor
    name="memberOfGroups"
    element-class-ref="mil.army.ima.ser.imcop.group.Group"
    indirection-table="ASSOC_IGROUP_IOBJECT"
    proxy="true">
    <fk-pointing-to-this-class column="OBJECT_SYSNO" />
    <fk-pointing-to-element-class column="GROUP_SYSNO" />
  </collection-descriptor>
  <collection-descriptor
    name="memberOfMenus"
    element-class-ref="mil.army.ima.ser.imcop.menu.Menu"
    indirection-table="ASSOC_IOBJECT_IMENU"
    proxy="true">
    <fk-pointing-to-this-class column="OBJECT_SYSNO" />
    <fk-pointing-to-element-class column="MENU_SYSNO" />
  </collection-descriptor>
  ...
</class-descriptor>

<!-- Definitions for Menu object-->
<class-descriptor
  class="mil.army.ima.ser.imcop.menu.Menu"
  table="IMCOP.IMENU">
  <field-descriptor
    name="systemNumber"
    column="SYSTEM_NUMBER"
    jdbc-type="INTEGER"
    primarykey="true"
    autoincrement="true"
    indexed="true" />
  ...
  <collection-descriptor
    name="memberObjects"
    element-class-ref="mil.army.ima.ser.imcop.object.Object"
    indirection-table="ASSOC_IOBJECT_IMENU"
    proxy="true">
    <fk-pointing-to-this-class column="MENU_SYSNO" />
    <fk-pointing-to-element-class column="OBJECT_SYSNO" />
  </collection-descriptor>
  <collection-descriptor
    name="children"
    element-class-ref="mil.army.ima.ser.imcop.associations.MenuOrder"
    proxy="true">
    <inverse-foreignkey field-ref="child" />
  </collection-descriptor>
  <collection-descriptor
    name="parents"
    element-class-ref="mil.army.ima.ser.imcop.associations.MenuOrder"
    proxy="true">
    <inverse-foreignkey field-ref="parent" />
  </collection-descriptor>
</class-descriptor>

In this there are a lot of M:N joins, and maybe I'm not going about this the
right way, but for time being I need to get this

to work.

Thanks for a great product.

Mike




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to