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 Bartłomiej Knabel <ba...@gmail.com> on 2005/04/24 17:32:35 UTC
[PB] two relations between two classes
Hi all!
I have two classes CzescAtomowa and CzescZlozona.
Between theese classes there are 2 relations :
<class-descriptor class="com.bimki.oo7j.ojb.om.CzescZlozona"
table="CzescZlozona">
<field-descriptor name="id" column="czz_id" jdbc-type="INTEGER"
primarykey="true" autoincrement="true"/>
<!-- relacja 1:m z czescia atomowa -->
<collection-descriptor name="czesciAtomowe" auto-update="object"
element-class-ref="com.bimki.oo7j.ojb.om.CzescAtomowa">
<inverse-foreignkey field-ref="czescZlozona_id" />
</collection-descriptor>
<!-- relacja 1:1 z czescia atomowa -->
<field-descriptor column="czz_glAtid" name="glownaAtomowa_id"
jdbc-type="INTEGER"></field-descriptor>
<reference-descriptor name="glownaAtomowa" auto-update="object"
class-ref="com.bimki.oo7j.ojb.om.CzescAtomowa">
<foreignkey field-ref="glownaAtomowa_id" />
</reference-descriptor>
......
==================
<class-descriptor class="com.bimki.oo7j.ojb.om.CzescAtomowa"
table="CzescAtomowa">
<field-descriptor name="id" column="cza_id" jdbc-type="INTEGER"
primarykey="true" autoincrement="true" />
<!-- relacja 1:m z czescia zlozona -->
<field-descriptor column="cza_czId" name="czescZlozona_id"
jdbc-type="INTEGER"></field-descriptor>
....
saving CzescZlozona object with :
1)
- not empty czesciAtomowe collection (1:n relation)
- empty glownaAtomowa (1:1) realtion
everythings in database looks fine
2)
- empty czesciAtomowe collection (1:n relation)
- not empty glownaAtomowa (1:1) realtion
everythings in database looks fine
3) but with :
- not empty czesciAtomowe collection (1:n relation)
- not empty glownaAtomowa (1:1) realtion
everythings I always got null values in database :(
czz_glAtid or cza_czId columns are null depending on saving order (but everthing in one transaction)
am I doing something wrong or is it a known bug?
Thanks for any help.
Greetings, Bimki
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org
Re: [PB] two relations between two classes
Posted by Bartłomiej Knabel <ba...@gmail.com>.
Hi Armin!
> is the mapping correct? Class CzescZlozona has a 1:n relation to
> CzescAtomowa AND a 1:1 relation to CzescAtomowa? Or do you want to map a
> 1:1 back-reference from CzescAtomowa to CzescZlozona?
Yes, it is correct. CzescZlozona has chirdlen :
"czesciAtomowe" field (1:n) (in real world it would be similar to workers)
and one of this chirdlen is special instance, marked as
("glownaAtomowa" field, 1:1) (in real world - i.e. - chief)
> If your mapping is correct, does CzescAtomowa has any references?
here is full CzescAtomowa description:
<class-descriptor class="com.bimki.oo7j.ojb.om.CzescAtomowa"
table="CzescAtomowa">
<field-descriptor name="id" column="cza_id" jdbc-type="INTEGER"
primarykey="true" autoincrement="true" />
<field-descriptor column="cza_x" name="x"
jdbc-type="INTEGER"></field-descriptor>
<field-descriptor column="cza_y" name="y"
jdbc-type="INTEGER"></field-descriptor>
<field-descriptor column="cza_dokId" name="dokId"
jdbc-type="INTEGER"></field-descriptor>
<!-- relacja 1:m z czescia zlozona -->
<field-descriptor column="cza_czId" name="czescZlozona_id"
jdbc-type="INTEGER"></field-descriptor>
<reference-descriptor name="czescZlozona" auto-update="none"
class-ref="com.bimki.oo7j.ojb.om.CzescZlozona">
<foreignkey field-ref="czescZlozona_id" />
</reference-descriptor>
<!-- relacja 1:m z polaczeniem -->
<collection-descriptor name="polaczenieDo"
element-class-ref="com.bimki.oo7j.ojb.om.Polaczenie">
<inverse-foreignkey field-ref="doatomowej_id" />
</collection-descriptor>
<!-- relacja 1:m z polaczeniem -->
<collection-descriptor name="polaczenieZ"
element-class-ref="com.bimki.oo7j.ojb.om.Polaczenie">
<inverse-foreignkey field-ref="zatomowej_id" />
</collection-descriptor>
<reference-descriptor name="super"
class-ref="com.bimki.oo7j.ojb.om.ElementProjektowy"
auto-retrieve="true" auto-update="true" auto-delete="true">
<foreignkey field-ref="id" />
</reference-descriptor>
</class-descriptor>
Bimki
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org
Re[2]: [PB] two relations between two classes
Posted by Bartłomiej Knabel <ba...@gmail.com>.
Hi!
AW> Could you post the source code of your test case?
Here are my mapping files :
<!--Czesc atomowa-->
<class-descriptor class="com.bimki.oo7j.ojb.om.CzescAtomowa"
table="CzescAtomowa">
<field-descriptor name="id" column="cza_id" jdbc-type="INTEGER"
primarykey="true" autoincrement="true" />
<field-descriptor column="cza_x" name="x" jdbc-type="INTEGER"></field-descriptor>
<field-descriptor column="cza_y" name="y" jdbc-type="INTEGER"></field-descriptor>
<field-descriptor column="cza_dokId" name="dokId" jdbc-type="INTEGER"></field-descriptor>
<!-- relacja 1:m z czescia zlozona -->
<field-descriptor column="cza_czId" name="czescZlozona_id"
jdbc-type="INTEGER"></field-descriptor>
<reference-descriptor name="czescZlozona" auto-update="link"
class-ref="com.bimki.oo7j.ojb.om.CzescZlozona">
<foreignkey field-ref="czescZlozona_id" />
</reference-descriptor>
<!-- relacja 1:m z polaczeniem -->
<collection-descriptor name="polaczenieDo"
element-class-ref="com.bimki.oo7j.ojb.om.Polaczenie">
<inverse-foreignkey field-ref="doatomowej_id" />
</collection-descriptor>
<!-- relacja 1:m z polaczeniem -->
<collection-descriptor name="polaczenieZ"
element-class-ref="com.bimki.oo7j.ojb.om.Polaczenie">
<inverse-foreignkey field-ref="zatomowej_id" />
</collection-descriptor>
<reference-descriptor name="super"
class-ref="com.bimki.oo7j.ojb.om.ElementProjektowy"
auto-retrieve="true" auto-update="true" auto-delete="true">
<foreignkey field-ref="id" />
</reference-descriptor>
</class-descriptor>
--------------------------------------------------------------
here is CzescAtomowa class :
public class CzescAtomowa extends com.bimki.oo7j.ojb.om.ElementProjektowy
implements java.io.Serializable {
// Fields
private java.lang.Integer x;
private java.lang.Integer id;
private java.lang.Integer czescZlozona_id;
private java.lang.Integer y;
private java.lang.Integer dokId;
private com.bimki.oo7j.ojb.om.CzescZlozona czescZlozona;
private java.util.Collection polaczenieDo = new ArrayList();
private java.util.Collection polaczenieZ = new ArrayList();
...
//getters, setters
--------------------------------------------------------------
<!--Czesc zlozona-->
<class-descriptor class="com.bimki.oo7j.ojb.om.CzescZlozona"
table="CzescZlozona">
<field-descriptor name="id" column="czz_id" jdbc-type="INTEGER"
primarykey="true" autoincrement="true"/>
<!-- relacja 1:m z czescia atomowa -->
<collection-descriptor name="czesciAtomowe" auto-update="link"
element-class-ref="com.bimki.oo7j.ojb.om.CzescAtomowa">
<inverse-foreignkey field-ref="czescZlozona_id" />
</collection-descriptor>
<!-- relacja 1:1 z czescia atomowa -->
<field-descriptor column="czz_glAtid" name="glownaAtomowa_id"
jdbc-type="INTEGER"></field-descriptor>
<reference-descriptor name="glownaAtomowa" auto-update="true"
class-ref="com.bimki.oo7j.ojb.om.CzescAtomowa">
<foreignkey field-ref="glownaAtomowa_id" />
</reference-descriptor>
<!-- relacja 1:1 z dokumentem -->
<field-descriptor column="czz_dokId" name="dokument_id" jdbc-type="INTEGER"></field-descriptor>
<reference-descriptor name="dokument" auto-update="true"
class-ref="com.bimki.oo7j.ojb.om.Dokument">
<foreignkey field-ref="dokument_id" />
</reference-descriptor>
<!-- relacja m:n z Zestawem podstawowym (dzielace) -->
<collection-descriptor name="zestawyPodstawoweDzielace" auto-delete="true"
collection-class="org.apache.ojb.broker.util.collections.ManageableArrayList"
element-class-ref="com.bimki.oo7j.ojb.om.ZestawPodstawowy"
auto-retrieve="true" auto-update="true" indirection-table="zp_czzd">
<fk-pointing-to-this-class column="czz_zp_czpIdd" />
<fk-pointing-to-element-class column="czz_zp_zpIdd" />
</collection-descriptor>
<!-- relacja m:n z Zestawem podstawowym (nie dzielace) -->
<collection-descriptor name="zestawyPodstawoweNieDzielace" auto-delete="true"
collection-class="org.apache.ojb.broker.util.collections.ManageableArrayList"
element-class-ref="com.bimki.oo7j.ojb.om.ZestawPodstawowy"
auto-retrieve="true" auto-update="true" indirection-table="zp_czznd">
<fk-pointing-to-this-class column="czz_zp_zpIdnd" />
<fk-pointing-to-element-class column="czz_zp_czpIdnd" />
</collection-descriptor>
<reference-descriptor name="super"
class-ref="com.bimki.oo7j.ojb.om.ElementProjektowy"
auto-retrieve="true" auto-update="true" auto-delete="true">
<foreignkey field-ref="id" />
</reference-descriptor>
</class-descriptor>
--------------------------------------------------------------
here is CzescZlozona class :
public class CzescZlozona extends com.bimki.oo7j.ojb.om.ElementProjektowy implements java.io.Serializable {
// Fields
private java.util.Collection zestawyPodstawoweNieDzielace = new ArrayList();
private java.util.Collection zestawyPodstawoweDzielace = new ArrayList();
private com.bimki.oo7j.ojb.om.Dokument dokument;
private com.bimki.oo7j.ojb.om.CzescAtomowa glownaAtomowa;
private java.util.Collection czesciAtomowe = new ArrayList();
private java.lang.Integer id;
private java.lang.Integer glownaAtomowa_id;
private java.lang.Integer dokument_id;
//getters, setters
============================================
my sample test case :
CzescZlozona czz = new CzescZlozona(Util.getRandomType(), Util
.getRandomDate(1997, 1999), null, null, new ArrayList(),
new ArrayList(), new ArrayList());
broker.store(dok);
CzescAtomowa[] czesciAtomowe = new CzescAtomowa[IloscCzANaCzZ];
for (int i = 0; i < IloscCzANaCzZ; i++) {
CzescAtomowa czAtomowa = new CzescAtomowa(Util.getRandomDate(1997,
2005), Util.getRandomInt(1, 9999), Util.getRandomInt(1,
9999), Util.getRandomInt(1, 9999), new ArrayList(),
new ArrayList());
czAtomowa.setTyp(Util.getRandomType());
czesciAtomowe[i] = czAtomowa;
}
czz.setDokument(dok);
dok.setCzescZlozona(czz);
for (int i = 0; i < IloscCzANaCzZ; i++) {
czesciAtomowe[i].setCzescZlozona(czz);
}
czz.setGlownaAtomowa(czesciAtomowe[0]);
broker.store(czz);
for (int i = 0; i < IloscCzANaCzZ; i++) {
broker.store(czesciAtomowe[i]);
}
after commiting this case, czescAtomowa[0] has value with negative
sign :
+--------+--------+--------+-----------+----------+
| cza_id | cza_x | cza_y | cza_dokId | cza_czId |
+--------+--------+--------+-----------+----------+
| 1 | 2453 | 8717 | 8338 | -4 | //here should be 2
| 4 | 1791 | 2567 | 941 | 2 |
| 5 | 7420 | 2185 | 3971 | 2 |
| 6 | 544 | 3685 | 5896 | 2 |
| 7 | 1302 | 1985 | 1284 | 2 |
| 8 | 1120 | 8319 | 4884 | 2 |
| 9 | 6646 | 9965 | 9977 | 2 |
| 10 | 9574 | 3504 | 8128 | 2 |
| 11 | 4194 | 6567 | 9490 | 2 |
+--------+--------+--------+-----------+----------+
rest of data in database looks fine.
--
Greetings,
Bartłomiej Knabel
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org
Re[2]: [PB] two relations between two classes
Posted by Bartłomiej Knabel <ba...@gmail.com>.
Hi,
should I look for the solution in metadata or in my java-code? What do
You think?
--
Greetings,
Bartłomiej Knabel
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org
Re: [PB] two relations between two classes
Posted by Armin Waibel <ar...@apache.org>.
Hi,
Bartłomiej Knabel wrote:
> Hi,
>
> I still didn't solve this poroblem.
> I don't know why in one table there is allways NULL value.
>
> I is just depending on saving order. I tried to use
> auto-save="object/reference/true", but all the times one table
> contains null.
>
> Is there any possibility to have two relations between two classes
> (one 1:1 and one 1:n)?
This shouldn't be a problem I think. Did you always set all referenced
objects in both directions before store? E.g. in CzescAtomowa is a 1:1
reference to CzescZlozona, in CzescZlozona are a 1:1 and a 1:n reference
to CzescAtomowa.
Could you post the source code of your test case?
regards,
Armin
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org
Re[2]: [PB] two relations between two classes
Posted by Bartłomiej Knabel <ba...@gmail.com>.
Hi,
I still didn't solve this poroblem.
I don't know why in one table there is allways NULL value.
I is just depending on saving order. I tried to use
auto-save="object/reference/true", but all the times one table
contains null.
Is there any possibility to have two relations between two classes
(one 1:1 and one 1:n)?
--
Greetings,
Bartłomiej Knabel
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org
Re[2]: [PB] two relations between two classes
Posted by Bartłomiej Knabel <ba...@gmail.com>.
I tried now use another cache (ObjectCacheTwoLevelImpl) with many
combinations of saving order and auto-update values.
Sometimes I got NULL Values in database, and sometimes negative
negative values.
--
Greetings,
Bartłomiej Knabel
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org
Re: [PB] two relations between two classes
Posted by Armin Waibel <ar...@apache.org>.
Hi Bimki,
is the mapping correct? Class CzescZlozona has a 1:n relation to
CzescAtomowa AND a 1:1 relation to CzescAtomowa? Or do you want to map a
1:1 back-reference from CzescAtomowa to CzescZlozona?
If your mapping is correct, does CzescAtomowa has any references?
regards,
Armin
Bartłomiej Knabel wrote:
> Hi all!
>
> I have two classes CzescAtomowa and CzescZlozona.
> Between theese classes there are 2 relations :
>
>
>
> <class-descriptor class="com.bimki.oo7j.ojb.om.CzescZlozona"
> table="CzescZlozona">
> <field-descriptor name="id" column="czz_id" jdbc-type="INTEGER"
> primarykey="true" autoincrement="true"/>
> <!-- relacja 1:m z czescia atomowa -->
> <collection-descriptor name="czesciAtomowe" auto-update="object"
> element-class-ref="com.bimki.oo7j.ojb.om.CzescAtomowa">
> <inverse-foreignkey field-ref="czescZlozona_id" />
> </collection-descriptor>
>
> <!-- relacja 1:1 z czescia atomowa -->
> <field-descriptor column="czz_glAtid" name="glownaAtomowa_id"
> jdbc-type="INTEGER"></field-descriptor>
> <reference-descriptor name="glownaAtomowa" auto-update="object"
> class-ref="com.bimki.oo7j.ojb.om.CzescAtomowa">
> <foreignkey field-ref="glownaAtomowa_id" />
> </reference-descriptor>
> ......
> ==================
>
> <class-descriptor class="com.bimki.oo7j.ojb.om.CzescAtomowa"
> table="CzescAtomowa">
> <field-descriptor name="id" column="cza_id" jdbc-type="INTEGER"
> primarykey="true" autoincrement="true" />
>
> <!-- relacja 1:m z czescia zlozona -->
> <field-descriptor column="cza_czId" name="czescZlozona_id"
> jdbc-type="INTEGER"></field-descriptor>
> ....
>
>
>
> saving CzescZlozona object with :
> 1)
> - not empty czesciAtomowe collection (1:n relation)
> - empty glownaAtomowa (1:1) realtion
>
> everythings in database looks fine
>
> 2)
> - empty czesciAtomowe collection (1:n relation)
> - not empty glownaAtomowa (1:1) realtion
>
> everythings in database looks fine
>
> 3) but with :
> - not empty czesciAtomowe collection (1:n relation)
> - not empty glownaAtomowa (1:1) realtion
>
> everythings I always got null values in database :(
> czz_glAtid or cza_czId columns are null depending on saving order (but everthing in one transaction)
>
> am I doing something wrong or is it a known bug?
>
> Thanks for any help.
> Greetings, Bimki
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
> For additional commands, e-mail: ojb-user-help@db.apache.org
>
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org