[prev in list] [next in list] [prev in thread] [next in thread] 

List:       ojb-user
Subject:    Still Probleml with Mapping Inheritance Hierarchies
From:       Björn_Voigt <bvoigt () hs-harz ! de>
Date:       2004-03-26 14:34:12
Message-ID: c41er4$b6n$1 () sea ! gmane ! org
[Download RAW message or body]

OK, I have still no solution for my inheritance mapping problem.
There are my Classes A,B and C implementing the ABInterface, C and B
extend from A. I want to map each class to a distinct tables, but
on Multiple Joined Tables. The c an b table have its own primary column 
"b_id" and "c_id" and both a foreign key "a_id" referenes the a table.

         Table A:                         Table B:
  id | some_value_from_a       b_id | a_id | some_value_from_b
----+-------------------     ------+------+-------------------
   1 |              1000        100 |    1 |              1001
   2 |              2000

                                          Table C:
                               c_id | a_id | some_value_from_c
                              ------+------+-------------------
                                101 |    2 |              2002



Ok, if I query the ABInterface I want have two
instances, one of B and one of C, something like this:

	instance test.B id:1 a_value:1000 b_value:1001
	instance test.C id:2 a_value:2000 c_value:2002

But I get also instances of A, a query has this result:

	instance test.A id:1 a_value:1000
	instance test.A id:2 a_value:2000
	instance test.B id:1 a_value:1000 b_value:1001
	instance test.C id:2 a_value:2000 c_value:2002

But thats not all:

	instance into b values (1, 1, 1001);   instead of:
	instance into b values (100, 1, 1001);

	has the following query-result:

	instance test.A id:1 a_value:1000
	instance test.A id:2 a_value:2000
	instance test.A id:1 a_value:1000
	instance test.C id:2 a_value:2000 c_value:2002

if b_id equals to an id of the a-table, or b_id equals
to a c_id in c-table, the result is another.

I am using rc5 and would be very happy, if you
can help me or give me an working example.


Björn Voigt


Here follows my complete source code:

package test;
public class A implements ABInterface{
	int id;
	int someValueFromA;
	public String toString() {
		return this.getClass() + " id:" +id +" a_value:" +
		someValueFromA;
	}
}

package test;
public class B extends A {
	int b_id;
	int someValueFromB;

	public String toString() {
		return super.toString() + " b_value:" + someValueFromB;
	}
}

package test;
public class C extends A {
	int c_id;
	int someValueFromC;
	public String toString() {
		return super.toString() + " c_value:" + someValueFromC;
	}
}

<class-descriptor class="test.ABInterface">
   <extent-class class-ref="test.A"/>	
   <extent-class class-ref="test.B"/>
   <extent-class class-ref="test.C"/>	
</class-descriptor>

<class-descriptor class="test.A" table="a">
   <field-descriptor name="id" column="id" jdbc-type="INTEGER"
	primarykey="true" autoincrement="true" />
   <field-descriptor name="someValueFromA" column="some_value_from_a"		
	jdbc-type="INTEGER" />
   <extent-class class-ref="test.B"/>	
   <extent-class class-ref="test.C"/>
</class-descriptor>

<class-descriptor class="test.B" table="b">
   <field-descriptor name="b_id" column="b_id" jdbc-type="INTEGER"
	primarykey="true" autoincrement="true" />
   <field-descriptor name="id" column="a_id" jdbc-type="INTEGER"/>
   <field-descriptor name="someValueFromB" column="some_value_from_b" 	
	jdbc-type="INTEGER"/>
   <reference-descriptor name="super" class-ref="test.A">
	<foreignkey field-ref="id"/>
   </reference-descriptor>
</class-descriptor>

<class-descriptor class="test.C" table="c">
   <field-descriptor name="c_id" column="c_id" jdbc-type="INTEGER"
	primarykey="true" autoincrement="true" />
   <field-descriptor name="id" column="a_id" jdbc-type="INTEGER"/>
   <field-descriptor name="someValueFromC" column="some_value_from_c"
	jdbc-type="INTEGER"/>
   <reference-descriptor name="super" class-ref="test.A">
	<foreignkey field-ref="id"/>
   </reference-descriptor>
</class-descriptor>



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

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic