2012-07-01 3 views
2

я разрабатываю несколько модульных тестов с попытками подключения к внутренней базе данных Derby, но получает следующее:врезанного соединение Glassfish JPA Datasource неудачу

ПРЕДУПРЕЖДЕНИЯ: Локальное Исключение Stack: Exception [EclipseLink-4002] (Eclipse, Постоянство Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException Internal Исключение: java.sql.SQLSyntaxErrorException: Таблица/Вид 'SEQUENCE' не существует. Код ошибки: 20000 Вызов: UPDATE SEQUENCE SET SEQ_COUNT = SEQ_COUNT +? WHERE SEQ_NAME =? bind => [2 привязанных параметра] Запрос: DataModifyQuery (name = "SEQUENCE" sql = "UPDATE SEQUENCE SET SEQ_COUNT = SEQ_COUNT +? WHERE SEQ_NAME =?") в org.eclipse.persistence.exceptions.DatabaseException.sqlException (DatabaseException .java: 333) на org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall (DatabaseAccessor.java:644) на org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeCall (DatabaseAccessor.java:535) на org.eclipse.persistence.internal.sessions.AbstractSession.basicExecuteCall (AbstractSession.java:1717) на org.eclipse.persistence.sessions.server.ClientSession.executeCall (ClientSession.java:253) на org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall (DatasourceCallQueryMechanism.java:207) на org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall (DatasourceCallQueryMechanism.java:193) в орг .eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeNoSelectCall (DatasourceCallQueryMechanism.java:236) на org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeNoSelect (DatasourceCallQueryMechanism.java:216) на org.eclipse.persistence .queries.DataModifyQuery.executeDatabaseQuery (DataModifyQuery.java:85) по адресу org.eclipse.persistence. queries.DatabaseQuery.execute (DatabaseQuery.java:844) на org.eclipse.persistence.internal.sessions.AbstractSession.internalExecuteQuery (AbstractSession.java:2831) на org.eclipse.persistence.internal.sessions.AbstractSession. ExecuteQuery (AbstractSession.java:1516) на org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery (AbstractSession.java:1498) на org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery (AbstractSession. java: 1463) at org.eclipse.persistence.sequencing.QuerySequence.update (QuerySequence.java:340) at org.eclipse.persistence.sequencing.QuerySequence.updateAnd SelectSequence (QuerySequence.java:277) на org.eclipse.persistence.sequencing.StandardSequence.getGeneratedVector (StandardSequence.java:71) на org.eclipse.persistence.sequencing.DefaultSequence.getGeneratedVector (DefaultSequence.java:163) на org.eclipse.persistence.sequencing.Sequence.getGeneratedVector (Sequence.java:257) в org.eclipse.persistence.internal.sequencing.SequencingManager $ Preallocation_Transaction_NoAccessor_State.getNextValue (SequencingManager.java:468) в орг. eclipse.persistence.internal.sequencing.SequencingManager.getNextValue (SequencingManager.java:1067) at org.eclipse.persistence.internal.sequencing.ClientSessionSeq uencing.getNextValue (ClientSessionSequencing.Java: 70) на org.eclipse.persistence.internal.descriptors.ObjectBuilder.assignSequenceNumber (ObjectBuilder.java:349) на org.eclipse.persistence.internal.descriptors.ObjectBuilder.assignSequenceNumber (ObjectBuilder.java:308) на org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.assignSequenceNumber (UnitOfWorkImpl.java:465) на org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerNotRegisteredNewObjectForPersist (UnitOfWorkImpl.java:4231) в орг .eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.registerNotRegisteredNewObjectForPersist (RepeatableWriteUnitOfWork.java:513) at org .eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerNewObjectForPersist (UnitOfWorkImpl.java:4176) на org.eclipse.persistence.internal.jpa.EntityManagerImpl.persist (EntityManagerImpl.java:440) на com.sun.enterprise .container.common.impl.EntityManagerWrapper.persist (EntityManagerWrapper.java:269) на com.thevehiclelist.VehicleEJB.createVehicle (VehicleEJB.java:32) на sun.reflect.NativeMethodAccessorImpl.invoke0 (нативный метод) при солнца. reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:57) на sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) на java.lang.reflect.Method.invoke (Method.java:601) при org.glassfish.ejb.security.application.EJBSecurityManager.runMethod (EJBSecurityManager.java:1052) на org.glassfish.ejb.security.application.EJBSecurityManager.invoke (EJBSecurityManager.java:1124) на com.sun .ejb.containers.BaseContainer.invokeBeanMethod (BaseContainer.java:5388) на com.sun.ejb.EjbInvocation.invokeBeanMethod (EjbInvocation.java:619) на com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext (InterceptorManager.java:800) в com.sun.ejb.EjbInvocation.proceed (EjbInvocation.java:571) в com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doAround (SystemInterceptorProxy.java:162) в ком .с un.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke (SystemInterceptorProxy.java:144) на sun.reflect.NativeMethodAccessorImpl.invoke0 (нативный метод) при sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:57) в sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Method.invoke (Method.java:601) в com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept (InterceptorManager. Java: 861) на com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext (InterceptorManager.java:800) в com.sun.ejb.containers.interceptors.InterceptorManager.intercept (InterceptorManager .java: 370) по адресу com.sun.ejb.containers.BaseContainer. перехватывают (BaseContainer.java:5360) на com.sun.ejb.containers.BaseContainer.intercept (BaseContainer.java:5348) на com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke (EJBLocalObjectInvocationHandler.java:214) на com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke (EJBLocalObjectInvocationHandlerDelegate.java:88) в $ Proxy113.createVehicle (Unknown Source) в com.thevehiclelist.__EJB31_Generated_ VehicleEJB _Intf_Bean _.createVehicle (Неизвестный Источник) на com.thevehiclelist.VehicleTest.shouldCreateAVehicle (VehicleTest.java:58) на sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method) на солнце. reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:57) на sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) на java.lang.reflect.Method.invoke (Method.java:601) при орг .junit.runners.model.FrameworkMethod $ 1.runReflectiveCall (FrameworkMethod.java:44) at org. junit.internal.runners.model.ReflectiveCallable.run (ReflectiveCallable.java:15) на org.junit.runners.model.FrameworkMethod.invokeExplosively (FrameworkMethod.java:41) на org.junit.internal.runners. statements.InvokeMethod.evaluate (InvokeMethod.java:20) на org.junit.runners.BlockJUnit4ClassRunner.runChild (BlockJUnit4ClassRunner.java:76) на org.junit.runners.BlockJUnit4ClassRunner.runChild (BlockJUnit4ClassRunner.java:50) на org.junit.runners.ParentRunner $ 3.run (ParentRunner.java:193) на org.junit.runners.ParentRunner $ 1.schedule (ParentRunner.java:52) на org.junit.runners.ParentRunner.runChildren (ParentRunner.java:191) по адресу org.junit.runners.ParentRunner.access $ 000 (ParentRunner.java:42) в org.junit.runners.ParentRunner $ 2.оценить (ParentRunner.java:184) в 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:236) на org.apache.maven.surefire.junit4.JUnit4Provider.execute (JUnit4Provider.java:236) на org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet (JUnit4Provider.java:134) в орг. apache.maven.surefire.junit4.JUnit4Provider.invoke (JUnit4Provider.java:113) at sun.reflect.Nati veMethodAccessorImpl.invoke0 (Родной метод) при sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:57) на sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Method. invoke (Method.java:601) в org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray (ReflectionUtils.java:189) at org.apache.maven.surefire.booter.ProviderFactory $ ProviderProxy.invoke (ProviderFactory) .java: 165) на org.apache.maven.surefire.booter.ProviderFactory.invokeProvider (ProviderFactory.java:85) в org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess (ForkedBooter.java:1 03) на org.apache.maven.surefire.booter.ForkedBooter.main (ForkedBooter.java:74) причиненном: java.sql.SQLSyntaxErrorException: Table/View 'Sequence' не существует. в org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException (Неизвестный источник) в org.apache.derby.impl.jdbc.Util.generateCsSQLException (Unknown Source) в org.apache.derby.impl. jdbc.TransactionResourceImpl.wrapInSQLException (Неизвестный Источник) на org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException (Неизвестный источник) в org.apache.derby.impl.jdbc.EmbedConnection.handleException (Неизвестный Источник) на org.apache.derby.impl.jdbc.ConnectionChild.handleException (Неизвестно Source) в org.apache.derby.impl.jdbc.EmbedPreparedStatement. (Неизвестный Источник) на org.apache .derby.impl.jdbc.EmbedPreparedStatement20. (Неизвестный Источник) на org.apache.derby.impl.jdbc.EmbedPreparedStatement30. (Неизвестный Source) в org.apache.derby.impl.jdbc.EmbedPreparedStatement40. (Неизвестно Источник) в org.apache.derby.jdbc.Driver40.newEmbedPreparedStatement (Неизвестно Источник) в org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement (Неизвестно)Источник) на org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement (Неизвестный источник) в com.sun.gjc.spi.base.ConnectionHolder.prepareStatement (ConnectionHolder.java:562) в ком. sun.gjc.spi.jdbc40.ConnectionWrapper40.prepareCachedStatement (ConnectionWrapper40.java:255) на com.sun.gjc.spi.jdbc40.ConnectionWrapper40.prepareCachedStatement (ConnectionWrapper40.java:52) на com.sun.gjc. spi.ManagedConnection.prepareCachedStatement (ManagedConnection.java:993) на com.sun.gjc.spi.jdbc40.ConnectionWrapper40.prepareStatement (ConnectionWrapper40.java:173) в орг .eclipse.persistence.internal.databaseaccess.DatabaseAccessor.prepareStatement (DatabaseAccessor.java:1474) на org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.prepareStatement (DatabaseAccessor.java:1423) на org.eclipse.persistence .internal.databaseaccess.DatabaseCall.prepareStatement (DatabaseCall.java:697) at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall (DatabaseAccessor.java:585) ... 86 more Причиненный: java.sql .SQLException: Таблица/Вид 'SEQUENCE' не существует. в org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException (Неизвестный источник) в org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA (Неизвестный источник) ... 108 более Вызванный: ERROR 42X05 : Таблица/Вид 'SEQUENCE' не существует. в org.apache.derby.iapi.error.StandardException.newException (Неизвестный источник) в org.apache.derby.impl.sql.compile.FromBaseTable.bindTableDescriptor (Неизвестный источник) в org.apache.derby. impl.sql.compile.FromBaseTable.bindNonVTITables (Неизвестный Источник) на org.apache.derby.impl.sql.compile.FromList.bindTables (Unknown Source) на org.apache.derby.impl.sql.compile. SelectNode.bindNonVTITables (Неизвестный Источник) на org.apache.derby.impl.sql.compile.DMLStatementNode.bindTables (Неизвестный Источник) на org.apache.derby.impl.sql.compile.UpdateNode.bindStatement (Неизвестно Источник) на org.apache.derby.impl.sql.GenericStatement.prepMinion (Unknown Source) в org.apache.derby.impl.sql.GenericStatement.prepare (Unknown Source) в org.apache.derby. impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement (Неизвестно источник) ... 102 более

Моя настойчивость.XML является:

<?xml version="1.0" encoding="UTF-8"?> 
<persistence xmlns="http://java.sun.com/xml/ns/persistence" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" 
    version="2.0"> 

    <persistence-unit name="carcmsPU" transaction-type="JTA"> 
     <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 
     <jta-data-source>jdbc/__default</jta-data-source> 

     <class>se.while_se.Book</class> 
     <class>se.while_se.Car</class> 
     <class>com.thevehiclelist.Vehicle</class> 



     <properties> 
      <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver" /> 
      <property name="javax.persistence.jdbc.url" value="jdbc:derby:MyTestDb;create=true" /> 
      <property name="javax.persistence.jdbc.user" value="" /> 
      <property name="javax.persistence.jdbc.password" value="" /> 
      <!-- <property name="eclipselink.ddl-generation" value="drop-and-create-tables" /> --> 

     </properties> 
    </persistence-unit> 
</persistence> 

И мой pom.xml это:

<dependencies> 
       <dependency> 
        <groupId>junit</groupId> 
        <artifactId>junit</artifactId> 
        <version>4.8.1</version> 
        <scope>test</scope> 
       </dependency> 
       <dependency> 
        <groupId>org.eclipse.persistence</groupId> 
        <artifactId>javax.persistence</artifactId> 
        <version>2.0.0</version> 
       </dependency> 
       <dependency> 
        <groupId>org.eclipse.persistence</groupId> 
        <artifactId>eclipselink</artifactId> 
        <version>2.3.2</version> 
       </dependency> 
       <dependency> 
        <groupId>org.glassfish.main.extras</groupId> 
        <artifactId>glassfish-embedded-all</artifactId> 
        <version>3.1.2</version> 
        <scope>provided</scope> 
       </dependency> 
       <dependency> 
        <groupId>org.apache.derby</groupId> 
        <artifactId>derby</artifactId> 
        <version>10.8.2.2</version> 
        <scope>provided</scope> 
       </dependency> 

      </dependencies> 

Похоже, что база данных не создается во внутренней базе данных, или я что-то пропустил?

С уважением

ответ

3

После этого прокомментирован. В результате ожидается, что таблицы и другие объекты базы данных (например, последовательности) не будут созданы.

<!-- <property name="eclipselink.ddl-generation" value="drop-and-create-tables" /> --> 

Просто удалить комментарии и он должен работать нормально:

<property name="eclipselink.ddl-generation" value="drop-and-create-tables" /> 

Подобно тому, как дополнительное примечание, имея create=true в строке соединения JDBC не влияет на это. Речь идет только о создании самой базы данных, а не таблиц и других объектов.

+0

Спасибо, я этого не знал. Но, можете ли вы посмотреть на это (что происходит, когда я раскоментировал эту строку и был причиной, по которой я попытался расколоть ее на первое место): http://stackoverflow.com/questions/11282889/embedded-glassfish-sql -statement обанкротиться – kungcc

Смежные вопросы