public class A {
public int id;
public String description;
}public class B extends A {
public double value;
}public class C extends A {
public Date value;
}<class-descriptor class="test.A"> <extent-class class-ref="test.B" /> <extent-class class-ref="test.C" /> </class-descriptor>
<class-descriptor
class="test.B" table="tableB">
<field-descriptor
name="id"
column="id"
jdbc-type="INTEGER"
primary-key="true"/>
<field-descriptor
name="description"
column="description"
jdbc-type="VARCHAR"/>
<field-descriptor
name="value"
column="value"
jdbc-type="DOUBLE"/>
</class-descriptor><class-descriptor
class="test.C" table="tableC">
<field-descriptor
name="id"
column="id"
jdbc-type="INTEGER"
primary-key="true"/>
<field-descriptor
name="description"
column="description"
jdbc-type="VARCHAR"/>
<field-descriptor
name="value"
column="value"
conversion="org.apache.ojb.broker.accesslayer.conversions.JavaDate2SqlTimestampFieldConversion"
jdbc-type="TIMESTAMP"/>
</class-descriptor>
Now fill with data:
insert into tableB (id, description, value) values (1, 'testB1', 123.45)
insert into tableB (id, description, value) values (2, 'testB2', 234.56)
insert into tableC (id, description, value) values (1, 'testC1', '2004-04-01 00:00:00.000')
insert into tableC (id, description, value) values (2, 'testC2', '2004-04-01 00:00:00.000')
Then try to read all with query by criteria, or something, over test.A class. You will get a collection of 4 objects B or 4 objects C (depending what the databased returned first!!!).
The problem here as far as I can see is because either B and C has exactly same PK definition and same values for PKs. As I related, if I add some kind of field to diferentiate the PK, result is right.
Best regards,
Edson Richter
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
