Hi, hope everyone is well!
I'm getting the following exception where OpenJPA complains about column
"TABLE_NAME0":
> -------------------------------------------------------------------------------
> Test set: park.model.LegalEntityTest
> -------------------------------------------------------------------------------
> Tests run: 4, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 4.906 sec
> <<< FAILURE!
> findAll(park.model.LegalEntityTest) Time elapsed: 1.255 sec <<< ERROR!
> <openjpa-2.0.1-r422266:989424 fatal store error>
> org.apache.openjpa.persistence.RollbackException: Column "TABLE_NAME0" not
> found; SQL statement:
> SELECT TABLE_VALUE FROM table_generator WHERE TABLE_NAME0 = ? FOR UPDATE
> [42122-131] {SELECT TABLE_VALUE FROM table_generator WHERE TABLE_NAME0 = ?
> FOR UPDATE} [code=42122, state=42S22]
> at
> org.apache.openjpa.persistence.EntityManagerImpl.commit(EntityManagerImpl.java:584)
> at park.model.LegalEntityTest.findAll(LegalEntityTest.java:125)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
> at
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
> at
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
> at
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
> at
> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
> at
> org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
> at
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:73)
> at
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:46)
> at
> org.junit.runners.ParentRunner.runChildren(ParentRunner.java:180)
> at org.junit.runners.ParentRunner.access$000(ParentRunner.java:41)
> at
> org.junit.runners.ParentRunner$1.evaluate(ParentRunner.java:173)
> at
> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
> at
> org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
> at org.junit.runners.ParentRunner.run(ParentRunner.java:220)
> at
> org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:62)
> at
> org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140)
> at
> org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127)
> at org.apache.maven.surefire.Surefire.run(Surefire.java:177)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at
> org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:345)
> at
> org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:1009)
> Caused by: <openjpa-2.0.1-r422266:989424 fatal general error>
> org.apache.openjpa.persistence.PersistenceException: Column "TABLE_NAME0"
> not found; SQL statement:
> SELECT TABLE_VALUE FROM table_generator WHERE TABLE_NAME0 = ? FOR UPDATE
> [42122-131] {SELECT TABLE_VALUE FROM table_generator WHERE TABLE_NAME0 = ?
> FOR UPDATE} [code=42122, state=42S22]
> at
> org.apache.openjpa.jdbc.sql.DBDictionary.narrow(DBDictionary.java:4832)
> at
> org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:4792)
> at
> org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:136)
> at
> org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:110)
> at
> org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:62)
> at
> org.apache.openjpa.jdbc.kernel.AbstractJDBCSeq.next(AbstractJDBCSeq.java:66)
> at
> org.apache.openjpa.util.ImplHelper.generateValue(ImplHelper.java:160)
> at
> org.apache.openjpa.util.ImplHelper.generateFieldValue(ImplHelper.java:144)
> at
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.assignField(JDBCStoreManager.java:774)
> at
> org.apache.openjpa.util.ApplicationIds.assign(ApplicationIds.java:487)
> at
> org.apache.openjpa.util.ApplicationIds.assign(ApplicationIds.java:463)
> at
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.assignObjectId(JDBCStoreManager.java:758)
> at
> org.apache.openjpa.kernel.DelegatingStoreManager.assignObjectId(DelegatingStoreManager.java:135)
> at
> org.apache.openjpa.kernel.StateManagerImpl.assignObjectId(StateManagerImpl.java:605)
> at
> org.apache.openjpa.kernel.StateManagerImpl.preFlush(StateManagerImpl.java:2952)
> at
> org.apache.openjpa.kernel.PNewState.beforeFlush(PNewState.java:40)
> at
> org.apache.openjpa.kernel.StateManagerImpl.beforeFlush(StateManagerImpl.java:1047)
> at
> org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:2077)
> at
> org.apache.openjpa.kernel.BrokerImpl.flushSafe(BrokerImpl.java:2037)
> at
> org.apache.openjpa.kernel.BrokerImpl.beforeCompletion(BrokerImpl.java:1955)
> at
> org.apache.openjpa.kernel.LocalManagedRuntime.commit(LocalManagedRuntime.java:81)
> at
> org.apache.openjpa.kernel.BrokerImpl.commit(BrokerImpl.java:1479)
> at
> org.apache.openjpa.kernel.DelegatingBroker.commit(DelegatingBroker.java:925)
> at
> org.apache.openjpa.persistence.EntityManagerImpl.commit(EntityManagerImpl.java:560)
> ... 29 more
> Caused by: org.apache.openjpa.lib.jdbc.ReportingSQLException: Column
> "TABLE_NAME0" not found; SQL statement:
> SELECT TABLE_VALUE FROM table_generator WHERE TABLE_NAME0 = ? FOR UPDATE
> [42122-131] {SELECT TABLE_VALUE FROM table_generator WHERE TABLE_NAME0 = ?
> FOR UPDATE} [code=42122, state=42S22]
> at
> org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.wrap(LoggingConnectionDecorator.java:273)
> at
> org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.wrap(LoggingConnectionDecorator.java:253)
> at
> org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.access$000(LoggingConnectionDecorator.java:70)
> at
> org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator$LoggingConnection.prepareStatement(LoggingConnectionDecorator.java:305)
> at
> org.apache.openjpa.lib.jdbc.DelegatingConnection.prepareStatement(DelegatingConnection.java:186)
> at
> org.apache.openjpa.lib.jdbc.ConfiguringConnectionDecorator$ConfiguringConnection.prepareStatement(ConfiguringConnectionDecorator.java:155)
> at
> org.apache.openjpa.lib.jdbc.DelegatingConnection.prepareStatement(DelegatingConnection.java:175)
> at
> org.apache.openjpa.jdbc.sql.SQLBuffer.prepareStatement(SQLBuffer.java:562)
> at
> org.apache.openjpa.jdbc.sql.SQLBuffer.prepareStatement(SQLBuffer.java:542)
> at
> org.apache.openjpa.jdbc.sql.SQLBuffer.prepareStatement(SQLBuffer.java:531)
> at
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq.prepareStatement(TableJDBCSeq.java:806)
> at
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq.getSequence(TableJDBCSeq.java:545)
> at
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq.setSequence(TableJDBCSeq.java:587)
> at
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq$AllocateSequenceRunnable.run(TableJDBCSeq.java:892)
> at
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq.allocateSequence(TableJDBCSeq.java:454)
> at
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq.nextInternal(TableJDBCSeq.java:305)
> at
> org.apache.openjpa.jdbc.kernel.AbstractJDBCSeq.next(AbstractJDBCSeq.java:60)
> ... 47 more
>
>
This is the table generator definition[1]:
> <table-generator
> name="person_table_generator"
> table="table_generator"
> pk-column-name="table_name"
> value-column-name="table_value"
> pk-column-value="PERSON"
> initial-value="1"
> allocation-size="1"/>
>
That table was created manually on database[2]:
> CREATE TABLE TABLE_GENERATOR (
> TABLE_NAME VARCHAR(50) NOT NULL,
> TABLE_VALUE NUMERIC(38),
> CONSTRAINT TABLE_GENERATOR_PK PRIMARY KEY (TABLE_NAME)
> );
> INSERT INTO TABLE_GENERATOR (TABLE_NAME, TABLE_VALUE) VALUES
> ('PRICE_TABLE', 1);
> INSERT INTO TABLE_GENERATOR (TABLE_NAME, TABLE_VALUE) VALUES ('PARKING',
> 1);
> INSERT INTO TABLE_GENERATOR (TABLE_NAME, TABLE_VALUE) VALUES ('PERSON',
> 1);
> INSERT INTO TABLE_GENERATOR (TABLE_NAME, TABLE_VALUE) VALUES ('STAY', 1);
>
OpenJPA looks for the TABLE_NAME0 column which, of course, doesn't exists!
Any idea on what is happening here?
Thanks,
Gilberto
[1]http://code.google.com/p/construtor/source/browse/trunk/cip/park/src/main/resources/META-INF/orm.xml
[2]http://code.google.com/p/construtor/source/browse/trunk/cip/park/src/test/resources/sql/park.tab.sql
--
View this message in context:
http://openjpa.208410.n2.nabble.com/Using-orm-xml-table-generator-Strange-Column-TABLE-NAME0-tp5809308p5809308.html
Sent from the OpenJPA Users mailing list archive at Nabble.com.