![]() |
![]() |
|
[
Permalink
| « Hide
]
Andy Jefferson added a comment - 02/Dec/05 07:00 PM
Bugs cannot be reported against unreleased software (as the docs say). Workaround is to run SchemaTool twice ... the first time it fails (but it adds entries to JPOX_TABLES). The second time it runs.
>Bugs cannot be reported against unreleased software (as the docs say).
Didn't get you, sorry. What does it mean? >Workaround is to run SchemaTool twice The same bug occurs also when I just start the server application and it raises the metadata for the ready db schema generated with the beta3 jpox version. Please tell will it occur if I generate the schema with the latest JPox version? Do JPOX_TABLES differ in these JPox versions? I'm out of the office currently and will be able to check the workaround at Monday only. But as far as i remember I ran schematool twice and even more checking the provided testcase because you didn't like my orevious ones.
>> Bugs cannot be reported against unreleased software.
> What does it mean ? Very simple. beta-5 is not released. Its CVS work in progress. So i changed the reported version to be beta-4. Nothing can be reported against beta-5 since it doesnt exist yet What I ran was enhancer, schematool, schematool. This worked for me. Its a workaround. Nothing more. Yes, you workaround helped for the testcase class schema. I've checked it remotelly. Now I will try to do the same with the real class chema.
Unfortunetelly it fails for the same table again and againg. Callstack differs from the provided testcase. Should I attach new testcase (hope to implement it in 2-3 days) to this issue or open the new one?
Here it is the exception. [java] INFO [JPOX.RDBMS.SCHEMA] - Managing Persistence of Class : some.project.package.allgemein.location.MasterstandortUndTiefer [Table : MASTERSTUNDTIEFER, InheritanceStrategy : new-table] [java] ERROR [JPOX.RDBMS.SCHEMA] - An exception was thrown while adding/validating class(es) : null [java] java.lang.NullPointerException [java] at org.jpox.store.rdbms.table.ClassTable.getIDMapping(ClassTable.java:1866) [java] at org.jpox.store.rdbms.table.AbstractClassTable.addApplicationIdUsingClassTableId(AbstractClassTable.java:156) [java] at org.jpox.store.rdbms.table.ClassTable.initializePK(ClassTable.java:668) [java] at org.jpox.store.rdbms.table.ClassTable.preInitilize(ClassTable.java:226) [java] at org.jpox.store.rdbms.RDBMSManager$ClassAdder.addClassTables(RDBMSManager.java:2208) [java] at org.jpox.store.rdbms.RDBMSManager$ClassAdder.addClasses(RDBMSManager.java:2061) [java] at org.jpox.store.rdbms.RDBMSManager$ClassAdder.access$000(RDBMSManager.java:1948) [java] at org.jpox.store.rdbms.RDBMSManager.addClasses(RDBMSManager.java:473) [java] at org.jpox.store.rdbms.RDBMSManager.addClass(RDBMSManager.java:493) [java] at org.jpox.store.rdbms.RDBMSManager.getDatastoreClass(RDBMSManager.java:766) [java] at org.jpox.store.rdbms.table.ClassTable.getSupertable(ClassTable.java:955) [java] at org.jpox.store.rdbms.table.ClassTable.preInitilize(ClassTable.java:221) [java] at org.jpox.store.rdbms.RDBMSManager$ClassAdder.addClassTables(RDBMSManager.java:2208) [java] at org.jpox.store.rdbms.RDBMSManager$ClassAdder.addClasses(RDBMSManager.java:2061) [java] at org.jpox.store.rdbms.RDBMSManager$ClassAdder.access$000(RDBMSManager.java:1948) [java] at org.jpox.store.rdbms.RDBMSManager.addClasses(RDBMSManager.java:473) [java] at org.jpox.store.rdbms.RDBMSManager.addClass(RDBMSManager.java:493) [java] at org.jpox.store.rdbms.RDBMSManager.getDatastoreClass(RDBMSManager.java:766) [java] at org.jpox.store.rdbms.table.ClassTable.getSupertable(ClassTable.java:955) [java] at org.jpox.store.rdbms.table.ClassTable.preInitilize(ClassTable.java:221) [java] at org.jpox.store.rdbms.RDBMSManager$ClassAdder.addClassTables(RDBMSManager.java:2208) [java] at org.jpox.store.rdbms.RDBMSManager$ClassAdder.addClasses(RDBMSManager.java:2061) [java] at org.jpox.store.rdbms.RDBMSManager$ClassAdder.access$000(RDBMSManager.java:1948) [java] at org.jpox.store.rdbms.RDBMSManager.addClasses(RDBMSManager.java:473) [java] at org.jpox.store.rdbms.RDBMSManager.addClass(RDBMSManager.java:493) [java] at org.jpox.store.rdbms.RDBMSManager.getDatastoreClass(RDBMSManager.java:766) [java] at org.jpox.store.rdbms.table.ClassTable.getSupertable(ClassTable.java:955) [java] at org.jpox.store.rdbms.table.ClassTable.preInitilize(ClassTable.java:221) [java] at org.jpox.store.rdbms.RDBMSManager$ClassAdder.addClassTables(RDBMSManager.java:2208) [java] at org.jpox.store.rdbms.RDBMSManager$ClassAdder.addClasses(RDBMSManager.java:2061) [java] at org.jpox.store.rdbms.RDBMSManager$ClassAdder.access$000(RDBMSManager.java:1948) [java] at org.jpox.store.rdbms.RDBMSManager.addClasses(RDBMSManager.java:473) [java] at org.jpox.store.rdbms.RDBMSManager.addClass(RDBMSManager.java:493) [java] at org.jpox.store.rdbms.RDBMSManager.getDatastoreClass(RDBMSManager.java:766) [java] at org.jpox.store.rdbms.table.ClassTable.getSupertable(ClassTable.java:955) [java] at org.jpox.store.rdbms.table.ClassTable.preInitilize(ClassTable.java:221) [java] at org.jpox.store.rdbms.RDBMSManager$ClassAdder.addClassTables(RDBMSManager.java:2208) [java] at org.jpox.store.rdbms.RDBMSManager$ClassAdder.addClasses(RDBMSManager.java:2061) [java] at org.jpox.store.rdbms.RDBMSManager$ClassAdder.access$000(RDBMSManager.java:1948) [java] at org.jpox.store.rdbms.RDBMSManager.addClasses(RDBMSManager.java:473) [java] at org.jpox.store.rdbms.RDBMSManager.addClass(RDBMSManager.java:493) [java] at org.jpox.store.rdbms.RDBMSManager.getDatastoreClass(RDBMSManager.java:766) [java] at org.jpox.store.rdbms.table.ClassTable.getSupertable(ClassTable.java:955) [java] at org.jpox.store.rdbms.table.ClassTable.preInitilize(ClassTable.java:221) [java] at org.jpox.store.rdbms.RDBMSManager$ClassAdder.addClassTables(RDBMSManager.java:2208) [java] at org.jpox.store.rdbms.RDBMSManager$ClassAdder.addClasses(RDBMSManager.java:2061) [java] at org.jpox.store.rdbms.RDBMSManager$ClassAdder.access$000(RDBMSManager.java:1948) [java] at org.jpox.store.rdbms.RDBMSManager.addClasses(RDBMSManager.java:473) [java] at org.jpox.store.rdbms.RDBMSManager.addClass(RDBMSManager.java:493) [java] at org.jpox.store.rdbms.RDBMSManager.getDatastoreClass(RDBMSManager.java:766) [java] at org.jpox.store.rdbms.table.ClassTable.getSupertable(ClassTable.java:955) [java] at org.jpox.store.rdbms.table.ClassTable.preInitilize(ClassTable.java:221) [java] at org.jpox.store.rdbms.RDBMSManager$ClassAdder.addClassTables(RDBMSManager.java:2208) [java] at org.jpox.store.rdbms.RDBMSManager$ClassAdder.addClassTablesAndValidate(RDBMSManager.java:2369) [java] at org.jpox.store.rdbms.RDBMSManager$ClassAdder.run(RDBMSManager.java:2023) [java] at org.jpox.store.rdbms.RDBMSManager$MgmtTransaction.execute(RDBMSManager.java:1887) [java] at org.jpox.store.rdbms.RDBMSManager.addClasses(RDBMSManager.java:479) [java] at org.jpox.SchemaTool.createSchemaTables(SchemaTool.java:180) [java] at org.jpox.SchemaTool.main(SchemaTool.java:674) [java] ERROR [JPOX.SchemaTool] - An exception was thrown during the operation of SchemaTool. Please refer to the log for full details. The following may help : java.lang.NullPointerException [java] An exception was thrown during the operation of SchemaTool. Please refer to the log for full details. The following may help : java.lang.NullPointerException [java] ERROR [JPOX.SchemaTool] - javax.jdo.JDOFatalInternalException: java.lang.NullPointerException [java] NestedThrowables: [java] java.lang.NullPointerException I've done a new testcase were your workaround doesn't work. The file name is "13Dec2005_schematool_testcase.zip". Running schematool 2, 3 ... times doesn't help.
Your issue is down to the fact that you insist on defining class hierarchies with circular relations and inheritance. Your "base" class has to know about the sub-subclass in order to create its table, yet your sub-subclass has to have its superclass and base class present first. One solution is for you to change your base class to have a set of base class objects instead of sub-subclass objects. This would mean that the base class would have its table created first and all should work fine.
Fixed in JPOX CVS. Both provided testcases run correctly
|
|||||||||||||||||||||||||||||||||||||||