FIXED: I had to tell H2 not to close with ;DB_CLOSE_DELAY=-1:

        <bean id="dataSource"
                
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
                <property name="driverClassName" value="org.h2.Driver" />
                <property name="url" 
value="jdbc:h2:mem:mypersistence;DB_CLOSE_DELAY=-1"
/>
                <property name="username" value="sa" />
                <property name="password" value="" />
        </bean>



Diane J wrote:
> 
> Using H2 database and Spring for testing:
> 
> <bean id="entityManagerFactory"
>       
> class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
>               <property name="persistenceUnitName" 
> value="testPersistenceUnit" />
>               <property name="dataSource" ref="dataSource" />
>               <property name="jpaVendorAdapter">
>                       <bean 
> class="org.springframework.orm.jpa.vendor.OpenJpaVendorAdapter">
>                               <property name="showSql" value="true" />
>                               <property name="generateDdl" value="true" />
>                               <property name="database" value="H2" />
>                       </bean>
>               </property>
>               <property name="jpaPropertyMap">
>                       <map>
>                               <entry key="openjpa.SynchronizeMappings"
> value="buildSchema(SchemaAction=add,deleteTableContents,ForeignKeys=true)"
> />
>                               <entry key="openjpa.Log" value="File=stdout, 
> DefaultLevel=TRACE,
> SQL=TRACE" />
>                               <entry key="openjpa.jdbc.DBDictionary"
> value="org.apache.openjpa.jdbc.sql.H2Dictionary(useGetObjectForBlobs=false)"
> /><!--
>                               <entry key="openjpa.jdbc.UpdateManager" 
> value="operation-order" />
>                               --><entry 
> key="openjpa.ConnectionFactoryProperties"
> value="PrettyPrint=true, PrettyPrintLineLength=72" />
>                       </map>
>               </property>
>               <property name="loadTimeWeaver">
>                       <bean
>                       
> class="org.springframework.instrument.classloading.SimpleLoadTimeWeaver"
> />
>               </property>
>       </bean>
> 
> 
> Console:
> 437  testPersistenceUnit  TRACE  [main] openjpa.jdbc.SQL - <t 109577864,
> conn 1115112055> executing stmnt 2093513928 
> CREATE TABLE EMPLOYMENT (EMPLOYMENT_ID BIGINT NOT NULL, LST_UPDT_CD 
>         VARCHAR(1), LST_UPDT_TMP TIMESTAMP, LST_UPDT_USER_ID BIGINT, 
>         CUST_EMP_ID VARCHAR(20), HIRED_DATE DATE, JOB_ID BIGINT, 
>         JOB_TITLE VARCHAR(50), ORG_ID BIGINT NOT NULL, ORIG_DATA_SRC 
>         VARCHAR(15), PART_TIME_FLAG VARCHAR(1), POSITION_TITLE 
>         VARCHAR(35), START_DATE DATE, TERM_DATE DATE, EMP_ID BIGINT NOT 
>         NULL, PRIMARY KEY (EMPLOYMENT_ID)) 
> 437  testPersistenceUnit  TRACE  [main] openjpa.jdbc.SQL - <t 109577864,
> conn 1115112055> [0 ms] spent
> 437  testPersistenceUnit  TRACE  [main] openjpa.jdbc.JDBC - <t 109577864,
> conn 1115112055> [0 ms] commit
> 437  testPersistenceUnit  TRACE  [main] openjpa.jdbc.JDBC - <t 109577864,
> conn 1115112055> [0 ms] close
> 453  testPersistenceUnit  TRACE  [main] openjpa.jdbc.JDBC - <t 109577864,
> conn 897594752> [16 ms] rollback
> 
> 484  testPersistenceUnit  TRACE  [main] openjpa.jdbc.SQL - <t 109577864,
> conn 1409963018> executing stmnt 307237456 
> CREATE INDEX I_MPLYMNT_EMPLOYEE 
>     ON EMPLOYMENT (EMP_ID) 
> 484  testPersistenceUnit  TRACE  [main] openjpa.jdbc.SQL - <t 109577864,
> conn 1409963018> [0 ms] spent
> 484  testPersistenceUnit  TRACE  [main] openjpa.jdbc.JDBC - <t 109577864,
> conn 1409963018> [0 ms] close
> 
> org.springframework.beans.factory.BeanCreationException: Error creating
> bean with name 'userDao': Injection of persistence fields failed; nested
> exception is <openjpa-1.2.1-SNAPSHOT-r422266:686069 nonfatal general
> error> org.apache.openjpa.persistence.PersistenceException: Table
> EMPLOYMENT not found; SQL statement:
> CREATE INDEX I_MPLYMNT_EMPLOYEE ON EMPLOYMENT (EMP_ID) [42102-115] {stmnt
> 714418837 
> CREATE INDEX I_MPLYMNT_EMPLOYEE 
>     ON EMPLOYMENT (EMP_ID) } [code=42102, state=42S02]
>       at
> org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.postProcessAfterInstantiation(PersistenceAnnotationBeanPostProcessor.java:311)
>       at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:959)
>       at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472)
>       at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
>       at 
> java.security.AccessController.doPrivileged(AccessController.java:224)
>       at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
>       at
> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
>       at
> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
>       at
> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
>       at
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
>       at
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
>       at
> org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
>       at
> org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
>       at
> org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:45)
>       at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
>       at java.lang.reflect.Method.invoke(Method.java:599)
>       at
> org.springframework.test.jpa.AbstractJpaTests.runBare(AbstractJpaTests.java:229)
>       at junit.framework.TestResult$1.protect(TestResult.java:110)
>       at junit.framework.TestResult.runProtected(TestResult.java:128)
>       at junit.framework.TestResult.run(TestResult.java:113)
>       at junit.framework.TestCase.run(TestCase.java:124)
>       at junit.framework.TestSuite.runTest(TestSuite.java:232)
>       at junit.framework.TestSuite.run(TestSuite.java:227)
>       at
> org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:79)
>       at junit.framework.JUnit4TestAdapter.run(JUnit4TestAdapter.java:39)
>       at
> org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:79)
>       at
> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:45)
>       at
> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
>       at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
>       at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
>       at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
>       at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
> Caused by: <openjpa-1.2.1-SNAPSHOT-r422266:686069 nonfatal general error>
> org.apache.openjpa.persistence.PersistenceException: Table EMPLOYMENT not
> found; SQL statement:
> CREATE INDEX I_MPLYMNT_EMPLOYEE ON EMPLOYMENT (EMP_ID) [42102-115] {stmnt
> 714418837 
> CREATE INDEX I_MPLYMNT_EMPLOYEE 
>     ON EMPLOYMENT (EMP_ID) } [code=42102, state=42S02]
>       at org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:553)
>       at org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:453)
>       at
> org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.synchronizeMappings(JDBCBrokerFactory.java:159)
>       at
> org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.newBrokerImpl(JDBCBrokerFactory.java:119)
>       at
> org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:189)
>       at
> org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:142)
>       at
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:192)
>       at
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:145)
>       at
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:56)
>       at
> org.springframework.orm.jpa.ExtendedEntityManagerCreator.createContainerManagedEntityManager(ExtendedEntityManagerCreator.java:198)
>       at
> org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor$PersistenceElement.resolveExtendedEntityManager(PersistenceAnnotationBeanPostProcessor.java:628)
>       at
> org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor$PersistenceElement.getResourceToInject(PersistenceAnnotationBeanPostProcessor.java:570)
>       at
> org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement.inject(InjectionMetadata.java:180)
>       at
> org.springframework.beans.factory.annotation.InjectionMetadata.injectFields(InjectionMetadata.java:105)
>       at
> org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.postProcessAfterInstantiation(PersistenceAnnotationBeanPostProcessor.java:308)
>       ... 33 more
> Caused by: org.apache.openjpa.lib.jdbc.ReportingSQLException: Table
> EMPLOYMENT not found; SQL statement:
> CREATE INDEX I_MPLYMNT_EMPLOYEE ON EMPLOYMENT (EMP_ID) [42102-115] {stmnt
> 714418837 
> CREATE INDEX I_MPLYMNT_EMPLOYEE 
>     ON EMPLOYMENT (EMP_ID) } [code=42102, state=42S02]
>       at
> org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.wrap(LoggingConnectionDecorator.java:192)
>       at
> org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.access$700(LoggingConnectionDecorator.java:57)
>       at
> org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator$LoggingConnection$LoggingStatement.executeUpdate(LoggingConnectionDecorator.java:762)
>       at
> org.apache.openjpa.lib.jdbc.DelegatingStatement.executeUpdate(DelegatingStatement.java:114)
>       at
> org.apache.openjpa.jdbc.schema.SchemaTool.executeSQL(SchemaTool.java:1191)
>       at
> org.apache.openjpa.jdbc.schema.SchemaTool.createIndex(SchemaTool.java:1006)
>       at org.apache.openjpa.jdbc.schema.SchemaTool.add(SchemaTool.java:554)
>       at org.apache.openjpa.jdbc.schema.SchemaTool.add(SchemaTool.java:344)
>       at org.apache.openjpa.jdbc.schema.SchemaTool.run(SchemaTool.java:321)
>       at org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:501)
>       ... 47 more
> 
> I don't see an error when creating the table, but the index won't create.
> 
> 
> 

-- 
View this message in context: 
http://n2.nabble.com/MappingTool-create-index-fails-tp3290561p3334263.html
Sent from the OpenJPA Users mailing list archive at Nabble.com.

Reply via email to