0

Я пишу некоторые Arquillian (с усадочной) тесты, и им в настоящее время с помощью JPA 2.1 создавать и удалять автоматизацию с помощью скриптов, с помощью persistence.xml:JPA 2.1 Выполнение сценария падения из persistence.xml с Arquillian & Розничной

// src/test/resources-wildfly-remote/test-persistence.xml 
// runs fine, configured as resource in pom.xml 
<?xml version="1.0" encoding="UTF-8"?> 
    <persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"> 
    <persistence-unit name="testPU" transaction-type="JTA"> 
     <!-- Wildfly JPA specific implementation config --> 
     <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider> 
     <jta-data-source>java:/jdbc/Test</jta-data-source> 
     <exclude-unlisted-classes>false</exclude-unlisted-classes> 
     <properties> 
      <property name="hibernate.archive.autodetection" value="class" /> 
      <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" /> 
      <property name="javax.persistence.schema-generation.database.action" 
      value="drop-and-create" /> 
      <property name="javax.persistence.schema-generation.create-source" 
      value="script" /> 
      <property name="javax.persistence.schema-generation.drop-source" 
      value="script" /> 
      <property name="javax.persistence.schema-generation.create-script-source" 
      value="META-INF/create-test.sql" /> 
      <property name="javax.persistence.schema-generation.drop-script-source" 
      value="META-INF/drop-test.sql" /> 
     </properties> 
    </persistence-unit> 
</persistence> 

Arquillian ж/Упаковочная сниппет: соответствующая структура

// src/test/java/com/example/MyTest.java 
@Deployment 
@TargetsContainer("wildfly") 
public static Archive<?> createDeployment() { 
    return ShrinkWrap 
      .create(WebArchive.class, "test.war") 
      .addAsResource("create-test.sql", "META-INF/create-test.sql") 
      .addAsResource("drop-test.sql", "META-INF/drop-test.sql") 
      .addAsResource("test-persistence.xml", 
        "META-INF/persistence.xml") 
      .addAsWebInfResource("example-ds.xml") 
      .addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml"); 
} 

проекта:

--project 
    --src/test 
     --java 
      --com/example/MyTest.java 
     --resources 
      --create-test.sql 
      --drop-test.sql 
      --example-ds.xml 
     --resources-wildfly-remote 
      --test-persistence.xml 

Тестирование и создание скриптов выполняется нормально, но капли не происходит, есть ли у кого такая же проблема?

EDIT (журнал добавлено):

// log snippet discriminating that the drop command wasnt executed 
2015-01-08 15:36:21,781 WARN [org.hibernate.jpa.internal.schemagen.GenerationTargetToDatabase] (ServerService Thread Pool -- 65) Unable to execute JPA schema generation drop command [DROP TABLE table1] 
2015-01-08 15:36:21,781 WARN [org.hibernate.jpa.internal.schemagen.GenerationTargetToDatabase] (ServerService Thread Pool -- 65) Unable to execute JPA schema generation drop command [DROP TABLE table2] 
2015-01-08 15:36:21,781 WARN [org.hibernate.jpa.internal.schemagen.GenerationTargetToDatabase] (ServerService Thread Pool -- 65) Unable to execute JPA schema generation drop command [DROP TABLE table3] 
2015-01-08 15:36:21,791 WARN [org.hibernate.jpa.internal.schemagen.GenerationTargetToDatabase] (ServerService Thread Pool -- 65) Unable to execute JPA schema generation drop command [DROP TABLE table4] 
2015-01-08 15:36:21,791 WARN [org.hibernate.jpa.internal.schemagen.GenerationTargetToDatabase] (ServerService Thread Pool -- 65) Unable to execute JPA schema generation drop command [DROP TABLE table5] 
2015-01-08 15:36:21,801 WARN [org.hibernate.jpa.internal.schemagen.GenerationTargetToDatabase] (ServerService Thread Pool -- 65) Unable to execute JPA schema generation drop command [DROP TABLE table6] 
2015-01-08 15:36:21,801 WARN [org.hibernate.jpa.internal.schemagen.GenerationTargetToDatabase] (ServerService Thread Pool -- 65) Unable to execute JPA schema generation drop command [DROP TABLE table7] 
2015-01-08 15:36:21,801 WARN [org.hibernate.jpa.internal.schemagen.GenerationTargetToDatabase] (ServerService Thread Pool -- 65) Unable to execute JPA schema generation drop command [DROP TABLE table8] 
2015-01-08 15:36:21,801 WARN [org.hibernate.jpa.internal.schemagen.GenerationTargetToDatabase] (ServerService Thread Pool -- 65) Unable to execute JPA schema generation drop command [DROP TABLE table9] 
2015-01-08 15:36:21,801 WARN [org.hibernate.jpa.internal.schemagen.GenerationTargetToDatabase] (ServerService Thread Pool -- 65) Unable to execute JPA schema generation drop command [DROP TABLE table10] 
2015-01-08 15:36:21,811 WARN [org.hibernate.jpa.internal.schemagen.GenerationTargetToDatabase] (ServerService Thread Pool -- 65) Unable to execute JPA schema generation drop command [DROP TABLE table11] 
2015-01-08 15:36:21,811 WARN [org.hibernate.jpa.internal.schemagen.GenerationTargetToDatabase] (ServerService Thread Pool -- 65) Unable to execute JPA schema generation drop command [DROP TABLE table12] 
2015-01-08 15:36:21,811 WARN [org.hibernate.jpa.internal.schemagen.GenerationTargetToDatabase] (ServerService Thread Pool -- 65) Unable to execute JPA schema generation drop command [DROP TABLE table13] 
2015-01-08 15:36:21,811 WARN [org.hibernate.jpa.internal.schemagen.GenerationTargetToDatabase] (ServerService Thread Pool -- 65) Unable to execute JPA schema generation drop command [DROP TABLE table14] 
2015-01-08 15:36:21,811 WARN [org.hibernate.jpa.internal.schemagen.GenerationTargetToDatabase] (ServerService Thread Pool -- 65) Unable to execute JPA schema generation drop command [DROP TABLE table15] 
2015-01-08 15:36:21,811 WARN [org.hibernate.jpa.internal.schemagen.GenerationTargetToDatabase] (ServerService Thread Pool -- 65) Unable to execute JPA schema generation drop command [DROP TABLE table16] 
2015-01-08 15:36:21,821 WARN [org.hibernate.jpa.internal.schemagen.GenerationTargetToDatabase] (ServerService Thread Pool -- 65) Unable to execute JPA schema generation drop command [DROP TABLE table17] 

Я буду стараться, любой шаг вперед, сообщим здесь.

EDIT ручной сценарий exection в методе испытания @After:

protected static void dropAllTables(UserTransaction utx, EntityManager em) 
     throws SystemException { 
    // Temporary solution for table dropping after tests 
    try { 
     InputStream fis = Thread.currentThread().getContextClassLoader() 
       .getResourceAsStream("META-INF/drop-teste.sql"); 

     StringBuilder builder = new StringBuilder(); 
     int ch; 
     while ((ch = fis.read()) != -1) { 
      builder.append((char) ch); 
     } 

     String[] dropCommands = builder.toString().split(";"); 

     utx.begin(); 
     for (String command : dropCommands) { 
      em.createNativeQuery(command).executeUpdate(); 
     } 
     utx.commit(); 
    } catch (Exception e) { 
     utx.rollback(); 
    } 
} 

ответ

0

Похоже, что Hibernate пытается выполнить ваши команды падение, но не в состоянии сделать это.

Это может произойти из-за ограничений между таблицами. Поэтому, пожалуйста, проверьте, хорош ли порядок удаления:

  • Во-первых: удалите таблицу, в которой нет ссылок на ForeignKey.
  • во-вторых: удалить следующий такой стол
  • и так далее - до тех самых самых основных таблиц, в которых нет FK внутри.

Regars

+0

Привет Grzesiek, Странным является то, что я использую тот же самый сценарий, чтобы удалить таблицы, я даже выполняя падение команд вручную, чтение файла, как временное решение, я отредактирую вопрос с помощью фрагмента. – vcorrea

+0

Что касается ошибок ограничения, которые уже натолкнулись на него, так как я выполнял его вручную и исправлял. Во всяком случае, thnx для двойной проверки:) – vcorrea

+0

О, и для сценария капли, его можно писать как можно проще, например: 'DROP TABLE table1; DROP TABLE table2; ... ' – vcorrea

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