JDO inheritance problem

2003-08-21 Thread Cdric Pineau


Hello,


   I'm trying to use OJB through JDO and have a problem with basic
inheritance between two persitent class :
 I get 
 class entities.Statute2 overrides final method .
 java.lang.VerifyError: class entities.Statute2 overrides final
method .
at java.lang.ClassLoader.defineClass0(Native Method)
... 
 at runtime when the classloader loads the Statute2 class.

 Statute2 inherits from Statute (this actually a test drive :-) Here is
my code :

 Statute :
package entities;
public class Statute {
  protected int id;
  public int getId() {
return this.id;
  }
  public void setId(int id) {
this.id = id;
  }

 
  /** default constructor */
  public Statute() {}
  /** full constructor */
  public Statute(java.lang.String name) {
this.name = name;
  }

 
  protected java.lang.String name;
  public java.lang.String getName() {
return this.name;
  }
  public void setName(java.lang.String name) {
this.name = name;
  }

 
  public String toString() {
return Statute +this.name+ (id = +this.id+);
  }
}

 Statute 2 :
package entities;
public class Statute2 extends Statute {
  /** default constructor */
  public Statute2() {}
  /** full constructor */
  public Statute2(java.lang.String name, String name2) {
this.name = name;
this.name2 = name2;
  }

 
  protected java.lang.String name2;
  public java.lang.String getName2() {
return this.name2;
  }
  public void setName2(java.lang.String name2) {
this.name2 = name2;
  }
 
  public String toString() {
return Statute +this.name+ +this.name2+ (id = +this.id+);
  }
}

repository_user.xml :
class-descriptor class=entities.Statute table=STATUTE
  extent-class class-ref=entities.Statute2 /
  field-descriptor name=id column=ID jdbc-type=INTEGER
primarykey=true autoincrement=true/
  field-descriptor name=name column=NAME jdbc-type=VARCHAR/
/class-descriptor

 
class-descriptor class=entities.Statute2 table=STATUTE2
  field-descriptor name=id column=ID jdbc-type=INTEGER
primarykey=true autoincrement=true/
  field-descriptor name=name column=NAME jdbc-type=VARCHAR/
  field-descriptor name=name2 column=NAME2 jdbc-type=VARCHAR/
/class-descriptor

entities.jdo (partial) :
...
class name=Statute
  extension vendor-name=ojb key=table value=Statute/
  field name=id
extension vendor-name=ojb key=column value=id/
  /field
  field name=name
extension vendor-name=ojb key=column value=name/
  /field
/class
class name=Statute2
  extension vendor-name=ojb key=table value=Statute2/
  field name=name2
extension vendor-name=ojb key=column value=name2/
  /field
/class
...

sql for table creation (postgresql) :
CREATE TABLE STATUTE (
  ID INT PRIMARY KEY,
  NAME TEXT
);

 
CREATE TABLE STATUTE2 (
  ID INT PRIMARY KEY,
  NAME TEXT,
  NAME2 TEXT
);


 I suppose I did something wrong but can't figure what. 
 I already tried to enhance only one of the two, to remove id and name
from Statute2 class-desciptor entry but...

 Can someone light my way to the wonderful world of JDO ?
 Thanks,

 Cdric



-- 
Societe Code Lutin
2, rue Robert le Ricolais
BP 20446 44304 NANTES CEDEX 3
Tel 02.40.50.29.28, Fax 02.40.93.99.21
http://www.codelutin.com


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



Re: JDO inheritance problem

2003-08-21 Thread Cdric Pineau
On Thu, 21 Aug 2003 08:54:07 -0500
Ketan Gangatirkar [EMAIL PROTECTED] wrote:

 persistence-capable-superclass=A


 That's what I was missing !
 Thank you !


 I went a little further and ...  got another (smaller, I think) problem
:

java.lang.ClassCastException
at org.apache.ojb.jdori.sql.OjbExtent.init(Unknown Source)
at org.apache.ojb.jdori.sql.OjbStoreManager.getExtent(Unknown
Source)
at com.sun.jdori.common.PersistenceManagerImpl.getExtent(Unknown
Source)
at com.sun.jdori.common.query.QueryImpl.checkCandidates(Unknown
Source)
at com.sun.jdori.common.query.QueryImpl.execute(Unknown Source)
at UCListAllStatutes.apply(UCListAllStatutes.java:38)
...

 Statue2 get recorded in its own table correctly.
 Statute also

 But I can't list Statute the way I used to :

  manager.currentTransaction().begin();
  Query query = manager.newQuery(Statute.class);
  Collection allStatutes = (Collection)query.execute();

 The last line give me the exception.

 Any idea about that ? 

 Cdric


-- 
Societe Code Lutin
2, rue Robert le Ricolais
BP 20446 44304 NANTES CEDEX 3
Tel 02.40.50.29.28, Fax 02.40.93.99.21
http://www.codelutin.com


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