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]