Julisys --

I had the same problem myself.  The solution is to simply set the schema attribute on 
the two class-descriptors.  This will cause ojb to treat those class-descriptors 
separately.

Ron Gallagher
Atlanta, GA
[EMAIL PROTECTED]

> 
> From: JUliSys <[EMAIL PROTECTED]>
> Date: 2003/08/08 Fri AM 05:55:46 EDT
> To: [EMAIL PROTECTED]
> Subject: PROBLEM: same table name in different databases
> 
> Hi all,
> 
> I have a problem using the PersistanceBroker API in ojb-1.0.rc4.
> 
> I tried to reduce the problem to a simple example as follows:
> 
> I'm using two different databases. From one database (db-source) I'm 
> reading data, then I process it in some way before I store it in the 
> second database (db-dest).
> 
> The data in db-source is stored in a table with the same name as in 
> db-dest (example: person), but the format is different (example: 
> birthday in db-source, but age in db-dest).
> 
> The person in db-source is mapped (see repository.xml below) to the 
> class ojbtest.PersonSource and the person in db-dest is mapped to the 
> class ojbtest.PersonDest. These classes are implemented as simple as it 
> would be expected.
> 
> When I try to read one PersonDest from db-dest, ojb assembles an SQL 
> command (see below) that tries to read also fields (A0.birthday) from 
> PersonSource which are not defined in PersonDest.
> 
> My questions:
> - Is there a way that ojb allows the same table name
>    in multiple different databases?
> - Is this an error in ojb or am I doing something wrong?
> 
> TIA
> julisys
> 
> 
> 
> This is the SQL command that is assembled by ojb:
> --------------------------------------------------------------------
> SELECT A0.age,A0.name,A0.id,A0.birthday
>    FROM person A0
>    WHERE A0.id =  ?
> --------------------------------------------------------------------
> 
> Here comes the repository.xml:
> --------------------------------------------------------------------
> 
> <?xml version="1.0" encoding="iso-8859-1"?>
> <!DOCTYPE descriptor-repository PUBLIC
>         "-//Apache Software Foundation//DTD OJB Repository//EN"
>         "repository.dtd"
> [
> <!ENTITY internal SYSTEM "repository_internal.xml">
> ]>
> 
> 
> <descriptor-repository version="1.0" isolation-level="read-uncommitted">
>    <jdbc-connection-descriptor jcd-alias="db-source"
>          default-connection="false" platform="Sapdb" jdbc-level="3.0"
>          driver="com.sap.dbtech.jdbc.DriverSapDB"
>          protocol="jdbc" subprotocol="sapdb" dbalias="//teapp/calendar"
>          username="mm" password="mm"
>          eager-release="false" batch-mode="false"
>          useAutoCommit="1" ignoreAutoCommitExceptions="false">
>        <connection-pool maxActive="21" validationQuery="" />
>    </jdbc-connection-descriptor>
> 
>    <jdbc-connection-descriptor jcd-alias="db-dest"
>           default-connection="true" platform="Sapdb" jdbc-level="3.0"
>           driver="com.sap.dbtech.jdbc.DriverSapDB"
>           protocol="jdbc" subprotocol="sapdb" dbalias="//teapp/newsdev"
>           username="news" password="news"
>           eager-release="false" batch-mode="false"
>           useAutoCommit="1" ignoreAutoCommitExceptions="false">
>        <connection-pool maxActive="21" validationQuery="" />
>    </jdbc-connection-descriptor>
> 
>    &internal;
> 
>    <class-descriptor class="ojbtest.PersonSource" table="person">
>        <field-descriptor name="id" column="id" jdbc-type="INTEGER"
>                          primarykey="true" autoincrement="true"/>
>        <field-descriptor name="name" column="name" jdbc-type="INTEGER"/>
>        <field-descriptor name="birthday" column="birthday"
>                          jdbc-type="DATE"/>
>    </class-descriptor>
> 
>    <class-descriptor class="ojbtest.PersonDest" table="person">
>        <field-descriptor name="id" column="id" jdbc-type="INTEGER"
>                          primarykey="true" autoincrement="true"/>
>        <field-descriptor name="name" column="name" jdbc-type="INTEGER"/>
>        <field-descriptor name="age" column="age" jdbc-type="INTEGER"/>
>    </class-descriptor>
> </descriptor-repository>
> 
> --------------------------------------------------------------------
> 
> 
> And this is the code that reads a PersonSource from db-source:
> --------------------------------------------------------------------
> 
> package ojbtest;
> 
> import org.apache.ojb.broker.*;
> import org.apache.ojb.broker.query.*;
> 
> import java.util.Iterator;
> 
> public class OjbTest {
>      public static void main(String[] args) {
>          PBKey pbKey;
>          PersistenceBroker persistenceBroker;
>          Query query;
>          Iterator iterator;
> 
>          try {
>              pbKey = new PBKey("db-dest");
>              persistenceBroker = 
> PersistenceBrokerFactory.createPersistenceBroker(pbKey);
>              Criteria criteria = new Criteria();
>              criteria.addEqualTo("id", new Integer(1));
>              query = new QueryByCriteria(PersonDest.class, criteria);
>              iterator = persistenceBroker.getIteratorByQuery(query);
>              if (iterator.hasNext()) {
>                  PersonDest person = (PersonDest) iterator.next();
>                  System.out.println(person);
>              }
>              persistenceBroker.close();
>          }
>          catch (Exception exception) {
>              exception.printStackTrace();
>          }
>      }
> }
> 
> 
> --------------------------------------------------------------------
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 


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

Reply via email to