Hello,

My name is Alexandre and I'm a student in the University of Geneva in the
Information Systems departement.

I'm currently working on a web application using an OJB layer. I have a
problem of column ambiguously defined when querying my Oracle Database through
OJB's QueryFactory method. I read Jakob Braeuchi's  answer to Naveen regarding
column prefixes.
Unfortunately, I didn't quite understand his solution: how can I base columns
on
attributes?

here is the method querying the database:

PersistenceBroker broker =
PersistenceBrokerFactory.defaultPersistenceBroker();
        Collection rootelements = null;
        Criteria crit = new Criteria();
        crit.addEqualTo("INROOT","1");
        Query q = QueryFactory.newQuery(Folder.class, crit);        
        try{
            rootelements = broker.getCollectionByQuery(q);
        }
        catch(PersistenceBrokerException e)
        {
            e.printStackTrace();
            if(broker != null) broker.abortTransaction();
        }
        finally
        {
            if (broker != null) broker.close();
        }

And here is the part of the relevant repository:

  <class-descriptor
    schema="FM"   
    class="matis.component.filemanager.Folder" 
    table="FOLDER">
    
      <field-descriptor
         name="id_Elem"
         column="ID_FOLDER"
         jdbc-type="INTEGER"
         primarykey="true"/>
      
       <collection-descriptor
         name="fichiersContained" 
         
collection-class="org.apache.ojb.broker.util.collections.ManageableArrayList"
         element-class-ref="matis.component.filemanager.Fichier"
         auto-retrieve="true"
         auto-update="true"
         auto-delete="true"
         indirection-table="INFOLD">
         <fk-pointing-to-this-class column="FOL_ID_ELEMENT"/>
         <fk-pointing-to-element-class column="ID_ELEMENT"/>
       </collection-descriptor>
      
       <collection-descriptor
         name="foldersContained" 
         
collection-class="org.apache.ojb.broker.util.collections.ManageableArrayList"
         element-class-ref="matis.component.filemanager.Folder"
         auto-retrieve="true"
         auto-update="true"
         auto-delete="true"
         indirection-table="INFOLD">
         <fk-pointing-to-this-class column="FOL_ID_ELEMENT"/>
         <fk-pointing-to-element-class column="ID_ELEMENT"/>
       </collection-descriptor>
       
       <reference-descriptor name="super"
         class-ref="matis.component.filemanager.Element"
         auto-retrieve="true"
         auto-update="true"
         auto-delete="true">
        <foreignkey field-ref="id_Elem"/>
    </reference-descriptor>
    
   </class-descriptor>

When logging OJB's activity, I can see the query who raises the Oracle
exception (ORA-00918: column ambiguously defined), here it is:

SELECT A0.ID_FOLDER 
FROM FM.FOLDER A0,INFOLD,FM.element A1,INFOLD 
WHERE A0.ID_FOLDER=A1.ID_ELEMENT 
AND ((INFOLD.FOL_ID_ELEMENT IN (?,?,?)) 
AND A0.ID_FOLDER = INFOLD.ID_ELEMENT)

I'm a bit lost since it's my first time using OJB (I hope it's not the
last).

Thanks a lot for reading my request and thanks in advance for your help.

Yours Sincerely,

Alexandre Thomas


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

Reply via email to