Hi,

I have I inheritance-problem. I want to map two classes to one table. They are defined as followed:

class A {
        int id;
        protected String ojbConcreteClass;
        // some attributes      
}

class B extends A {
        // some additional attributes
}


I created class-descriptors for each of the table:

<class-descriptor class="A" table="table">
        // field-descriptors for A inluding ojbConcreteClass
</class>

and


<class-descriptor class="B" table="table" extends="A"> // additional field-descriptors for B </class>


So: When I try to store an instance of Type A everything is fine. But when I try to store an instance of Type B OJB complains:


Caused by: org.apache.ojb.broker.metadata.ClassNotPersistenceCapableException: OJB needs at least one primary key attribute for class objectsRealClass=class kos.wnetz.om.RelationHistoryEvent, objectTopLevelClass=class kos.wnetz.om.RelationHistoryEvent
at org.apache.ojb.broker.Identity.checkForPrimaryKeys(Identity.java:245)
at org.apache.ojb.broker.Identity.init(Identity.java:121)



So I also tried to include the field-descriptors of the superclass in the class-descriptor for class B. But then I get an even worse error:


Caused by: java.sql.SQLException: Parameter index out of range (8 > 7).
at com.mysql.jdbc.PreparedStatement.setInternal(PreparedStatement.java:1940)
at com.mysql.jdbc.PreparedStatement.setString(PreparedStatement.java:1075)
at com.mysql.jdbc.PreparedStatement.setObject(PreparedStatement.java:766)
at com.mysql.jdbc.PreparedStatement.setObject(PreparedStatement.java:892)
at org.apache.ojb.broker.platforms.PlatformDefaultImpl.setObjectForStatement(PlatformDefaultImpl.java:227)
at org.apache.ojb.broker.platforms.PlatformMySQLImpl.setObjectForStatement(PlatformMySQLImpl.java:87)
at org.apache.ojb.broker.accesslayer.StatementManager.bindInsert(StatementManager.java:449)
at org.apache.ojb.broker.accesslayer.JdbcAccessImpl.executeInsert(JdbcAccessImpl.java:193)
... 47 more


So obviously I am missing somthing. do you have any suggestions?

Tino


--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to