You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-user@db.apache.org by Joose Vettenranta <jo...@iki.fi> on 2004/11/12 08:33:34 UTC

2 classes, same table name, different database

Hi,

I have 2 databases, let's call them db1 and db2

in db1 I have table called admin
in db2 I have also table called admin

but they are not like each other, they have different kind of table 
structure.

for db1 I have a class to access table admin, let's call it 
net.vettenranta.db1.AdminImpl;
for db2 I have a class to access table admin, let's call it 
net.vettanranta.db2.Admin;

Now, here is the problem:

when I try to get data from db2 it tries also get db1's fields (most 
likely same happens to db1 class, but have not tried yet) which causes 
error: Caused by: java.sql.SQLException: ERROR:  No such attribute 
a0.uid

So, is it possible to tell ojb that "heyy, it's this db2.Admin 
reference you have to use from repository, not db1.AdminImpl"?

Using ojb1.0.1

Thanks, Joose

--
"Always remember that you are unique, just like everyone else!"
* http://iki.fi/joose/ * joose@iki.fi * +358 44 561 0270 *


---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org


Re: BUG(?): 2 classes, same table name, different database

Posted by Armin Waibel <ar...@apache.org>.
Hi Joose,

AFAIK all persistent object related mappings (in OJB metadata classes) 
based on class name not on table name, so your problem should not 
happen. Nevertheless seems it does.
Could you post more details, e.g. a code snip where the problem happens.

How could a test case for your problem look like?
- Obtain PB instance for db1 and store AdminImpl object, close this PB. 
- Then obtain PB instance for db2 and store an Admin object --> this fails.

regards,
Armin


Joose Vettenranta wrote:
> If this is a bug,  hope some developer knows how to fix this.
> 
> for now, I made this "glue" solution, I just add database in front of 
> every table name. like
> 
> db1_admin
> db2_admin
> 
> and then ojb doesn't mix up those data.
> 
> more information:
> 
> in db1:
> create table admin (
>  uid varchar(20) not null,
>  password varchar(20) not null,
> primary key(uid));
> 
> in db2:
> create table admin (
>  id serial,
>  login varchar(30) not null,
>  password varchar(30) not null,
>  email varchar(100),
> primary key(id));
> 
> so when trying to fetch admin from db2 it tries to take uid also and 
> SqlException happenens (see below)
> 
> Thanks,
> 
> Joose
> 
> 15.11.2004 kello 13:57, Joose Vettenranta kirjoitti:
> 
>  So, is this a bug in OJB?
> 
>>
>> So one software,
>> 2 database
>> 2 classes
>> 2 different kind of table, but they are both named same
>> => table <-> class mapping is not working
>>
>> - Joose
>>
>> 12.11.2004 kello 09:43, Joose Vettenranta kirjoitti:
>>
>>  I forgot to say, that I have different dbuser and different 
>> connection for both of dabases. And both connection is described with 
>> jdbc-connection-descriptor -element and using :
>>
>>>                         <object-cache 
>>> class="org.apache.ojb.broker.cache.ObjectCacheDefaultImpl">
>>>                                 <attribute attribute-name="timeout" 
>>> attribute-value="900"/>
>>>                                 <attribute attribute-name="autoSync" 
>>> attribute-value="true"/>
>>>                                 <attribute 
>>> attribute-name="cachingKeyType" attribute-value="1"/>
>>>                                 </object-cache>
>>>
>>> Thanks,
>>>
>>> Joose
>>>
>>> 12.11.2004 kello 09:33, Joose Vettenranta kirjoitti:
>>>
>>>  Hi,
>>>
>>>>
>>>> I have 2 databases, let's call them db1 and db2
>>>>
>>>> in db1 I have table called admin
>>>> in db2 I have also table called admin
>>>>
>>>> but they are not like each other, they have different kind of table 
>>>> structure.
>>>>
>>>> for db1 I have a class to access table admin, let's call it 
>>>> net.vettenranta.db1.AdminImpl;
>>>> for db2 I have a class to access table admin, let's call it 
>>>> net.vettanranta.db2.Admin;
>>>>
>>>> Now, here is the problem:
>>>>
>>>> when I try to get data from db2 it tries also get db1's fields (most 
>>>> likely same happens to db1 class, but have not tried yet) which 
>>>> causes error: Caused by: java.sql.SQLException: ERROR:  No such 
>>>> attribute a0.uid
>>>>
>>>> So, is it possible to tell ojb that "heyy, it's this db2.Admin 
>>>> reference you have to use from repository, not db1.AdminImpl"?
>>>>
>>>> Using ojb1.0.1
>>>>
>>>> Thanks, Joose
> 
> -- 
> "Always remember that you are unique, just like everyone else!"
> * http://iki.fi/joose/ * joose@iki.fi * +358 44 561 0270 *
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
> For additional commands, e-mail: ojb-dev-help@db.apache.org
> 
> 
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org


BUG(?): 2 classes, same table name, different database

Posted by Joose Vettenranta <jo...@iki.fi>.
If this is a bug,  hope some developer knows how to fix this.

for now, I made this "glue" solution, I just add database in front of 
every table name. like

db1_admin
db2_admin

and then ojb doesn't mix up those data.

more information:

in db1:
create table admin (
  uid varchar(20) not null,
  password varchar(20) not null,
primary key(uid));

in db2:
create table admin (
  id serial,
  login varchar(30) not null,
  password varchar(30) not null,
  email varchar(100),
primary key(id));

so when trying to fetch admin from db2 it tries to take uid also and 
SqlException happenens (see below)

Thanks,

Joose

15.11.2004 kello 13:57, Joose Vettenranta kirjoitti:

  So, is this a bug in OJB?
>
> So one software,
> 2 database
> 2 classes
> 2 different kind of table, but they are both named same
> => table <-> class mapping is not working
>
> - Joose
>
> 12.11.2004 kello 09:43, Joose Vettenranta kirjoitti:
>
>  I forgot to say, that I have different dbuser and different 
> connection for both of dabases. And both connection is described with 
> jdbc-connection-descriptor -element and using :
>>                         <object-cache 
>> class="org.apache.ojb.broker.cache.ObjectCacheDefaultImpl">
>>                                 <attribute attribute-name="timeout" 
>> attribute-value="900"/>
>>                                 <attribute attribute-name="autoSync" 
>> attribute-value="true"/>
>>                                 <attribute 
>> attribute-name="cachingKeyType" attribute-value="1"/>
>>                                 </object-cache>
>>
>> Thanks,
>>
>> Joose
>>
>> 12.11.2004 kello 09:33, Joose Vettenranta kirjoitti:
>>
>>  Hi,
>>>
>>> I have 2 databases, let's call them db1 and db2
>>>
>>> in db1 I have table called admin
>>> in db2 I have also table called admin
>>>
>>> but they are not like each other, they have different kind of table 
>>> structure.
>>>
>>> for db1 I have a class to access table admin, let's call it 
>>> net.vettenranta.db1.AdminImpl;
>>> for db2 I have a class to access table admin, let's call it 
>>> net.vettanranta.db2.Admin;
>>>
>>> Now, here is the problem:
>>>
>>> when I try to get data from db2 it tries also get db1's fields (most 
>>> likely same happens to db1 class, but have not tried yet) which 
>>> causes error: Caused by: java.sql.SQLException: ERROR:  No such 
>>> attribute a0.uid
>>>
>>> So, is it possible to tell ojb that "heyy, it's this db2.Admin 
>>> reference you have to use from repository, not db1.AdminImpl"?
>>>
>>> Using ojb1.0.1
>>>
>>> Thanks, Joose
--
"Always remember that you are unique, just like everyone else!"
* http://iki.fi/joose/ * joose@iki.fi * +358 44 561 0270 *


---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org


BUG(?): 2 classes, same table name, different database

Posted by Joose Vettenranta <jo...@iki.fi>.
If this is a bug,  hope some developer knows how to fix this.

for now, I made this "glue" solution, I just add database in front of 
every table name. like

db1_admin
db2_admin

and then ojb doesn't mix up those data.

more information:

in db1:
create table admin (
  uid varchar(20) not null,
  password varchar(20) not null,
primary key(uid));

in db2:
create table admin (
  id serial,
  login varchar(30) not null,
  password varchar(30) not null,
  email varchar(100),
primary key(id));

so when trying to fetch admin from db2 it tries to take uid also and 
SqlException happenens (see below)

Thanks,

Joose

15.11.2004 kello 13:57, Joose Vettenranta kirjoitti:

  So, is this a bug in OJB?
>
> So one software,
> 2 database
> 2 classes
> 2 different kind of table, but they are both named same
> => table <-> class mapping is not working
>
> - Joose
>
> 12.11.2004 kello 09:43, Joose Vettenranta kirjoitti:
>
>  I forgot to say, that I have different dbuser and different 
> connection for both of dabases. And both connection is described with 
> jdbc-connection-descriptor -element and using :
>>                         <object-cache 
>> class="org.apache.ojb.broker.cache.ObjectCacheDefaultImpl">
>>                                 <attribute attribute-name="timeout" 
>> attribute-value="900"/>
>>                                 <attribute attribute-name="autoSync" 
>> attribute-value="true"/>
>>                                 <attribute 
>> attribute-name="cachingKeyType" attribute-value="1"/>
>>                                 </object-cache>
>>
>> Thanks,
>>
>> Joose
>>
>> 12.11.2004 kello 09:33, Joose Vettenranta kirjoitti:
>>
>>  Hi,
>>>
>>> I have 2 databases, let's call them db1 and db2
>>>
>>> in db1 I have table called admin
>>> in db2 I have also table called admin
>>>
>>> but they are not like each other, they have different kind of table 
>>> structure.
>>>
>>> for db1 I have a class to access table admin, let's call it 
>>> net.vettenranta.db1.AdminImpl;
>>> for db2 I have a class to access table admin, let's call it 
>>> net.vettanranta.db2.Admin;
>>>
>>> Now, here is the problem:
>>>
>>> when I try to get data from db2 it tries also get db1's fields (most 
>>> likely same happens to db1 class, but have not tried yet) which 
>>> causes error: Caused by: java.sql.SQLException: ERROR:  No such 
>>> attribute a0.uid
>>>
>>> So, is it possible to tell ojb that "heyy, it's this db2.Admin 
>>> reference you have to use from repository, not db1.AdminImpl"?
>>>
>>> Using ojb1.0.1
>>>
>>> Thanks, Joose
--
"Always remember that you are unique, just like everyone else!"
* http://iki.fi/joose/ * joose@iki.fi * +358 44 561 0270 *


---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org


BUG(?): 2 classes, same table name, different database

Posted by Joose Vettenranta <jo...@iki.fi>.
So, is this a bug in OJB?

So one software,
2 database
2 classes
2 different kind of table, but they are both named same
=> table <-> class mapping is not working

- Joose

12.11.2004 kello 09:43, Joose Vettenranta kirjoitti:

  I forgot to say, that I have different dbuser and different connection 
for both of dabases. And both connection is described with 
jdbc-connection-descriptor -element and using :
>                         <object-cache 
> class="org.apache.ojb.broker.cache.ObjectCacheDefaultImpl">
>                                 <attribute attribute-name="timeout" 
> attribute-value="900"/>
>                                 <attribute attribute-name="autoSync" 
> attribute-value="true"/>
>                                 <attribute 
> attribute-name="cachingKeyType" attribute-value="1"/>
>                                 </object-cache>
>
> Thanks,
>
> Joose
>
> 12.11.2004 kello 09:33, Joose Vettenranta kirjoitti:
>
>  Hi,
>>
>> I have 2 databases, let's call them db1 and db2
>>
>> in db1 I have table called admin
>> in db2 I have also table called admin
>>
>> but they are not like each other, they have different kind of table 
>> structure.
>>
>> for db1 I have a class to access table admin, let's call it 
>> net.vettenranta.db1.AdminImpl;
>> for db2 I have a class to access table admin, let's call it 
>> net.vettanranta.db2.Admin;
>>
>> Now, here is the problem:
>>
>> when I try to get data from db2 it tries also get db1's fields (most 
>> likely same happens to db1 class, but have not tried yet) which 
>> causes error: Caused by: java.sql.SQLException: ERROR:  No such 
>> attribute a0.uid
>>
>> So, is it possible to tell ojb that "heyy, it's this db2.Admin 
>> reference you have to use from repository, not db1.AdminImpl"?
>>
>> Using ojb1.0.1
>>
>> Thanks, Joose
>
--
"Always remember that you are unique, just like everyone else!"
* http://iki.fi/joose/ * joose@iki.fi * +358 44 561 0270 *


---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org


Re: 2 classes, same table name, different database

Posted by Joose Vettenranta <jo...@iki.fi>.
I forgot to say, that I have different dbuser and different connection 
for both of dabases. And both connection is described with 
jdbc-connection-descriptor -element and using :
                         <object-cache 
class="org.apache.ojb.broker.cache.ObjectCacheDefaultImpl">
                                 <attribute attribute-name="timeout" 
attribute-value="900"/>
                                 <attribute attribute-name="autoSync" 
attribute-value="true"/>
                                 <attribute 
attribute-name="cachingKeyType" attribute-value="1"/>
                                 </object-cache>

Thanks,

Joose

12.11.2004 kello 09:33, Joose Vettenranta kirjoitti:

  Hi,
>
> I have 2 databases, let's call them db1 and db2
>
> in db1 I have table called admin
> in db2 I have also table called admin
>
> but they are not like each other, they have different kind of table 
> structure.
>
> for db1 I have a class to access table admin, let's call it 
> net.vettenranta.db1.AdminImpl;
> for db2 I have a class to access table admin, let's call it 
> net.vettanranta.db2.Admin;
>
> Now, here is the problem:
>
> when I try to get data from db2 it tries also get db1's fields (most 
> likely same happens to db1 class, but have not tried yet) which causes 
> error: Caused by: java.sql.SQLException: ERROR:  No such attribute 
> a0.uid
>
> So, is it possible to tell ojb that "heyy, it's this db2.Admin 
> reference you have to use from repository, not db1.AdminImpl"?
>
> Using ojb1.0.1
>
> Thanks, Joose
>
> --
> "Always remember that you are unique, just like everyone else!"
> * http://iki.fi/joose/ * joose@iki.fi * +358 44 561 0270 *
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
> For additional commands, e-mail: ojb-user-help@db.apache.org
>
>
--
"Always remember that you are unique, just like everyone else!"
* http://iki.fi/joose/ * joose@iki.fi * +358 44 561 0270 *


---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org