2015-08-11 3 views
0

Так что я получаю эту ошибку:DBUnit NoSuchColumnException в родительском классе

org.dbunit.dataset.NoSuchColumnException: TOYOTA.CAR_MAKE - (Non-uppercase input column: CRTE_DT_TM) in ColumnNameToIndexes cache map. Note that the map's column names are NOT case sensitive. 

при попытке заполнить H2 DB, используя DbUnit в контексте теста Spring JUnit. DDL для H2 DB создается из JPA-аннотированных классов. Однако столбец существует, он находится в абстрактном классе, который расширен основным классом.

Позвольте мне объяснить. Класс ядра JPA выглядит следующим образом:

@Entity 
@Table(name = "TOYOTA") 
public class Toyota extends Car { 

    @Id 
    @Column(name = "TOYOTA_REF") 
    private String toyotaRef; 

    @Column(name = "TOYOTA_DEALER") 
    private String toyotaDealer; 
// etc. 

родительский класс выглядит следующим образом:

public abstract class Car { 

    @Column(name = "CAR_MAKE") 
    private String carMake; 

    @Column(name = "CAR_MODEL") 
    private String carModel; 

Я инициирующие тесты, как это:

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations = "classpath:/test-spring-config.xml") // Load Spring Test context 
@TestExecutionListeners({DependencyInjectionTestExecutionListener.class, 
     TransactionalTestExecutionListener.class, 
     DbUnitTestExecutionListener.class}) // Used to load test data onto DB}) 

@DatabaseSetup(value = {"classpath:/integrationTestData/Toyota.xml"}) 
@Test 
@Transactional 

public void testSomething() { 

и мои данные Toyota.xml файл выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?> 

<dataset> 
    <TOYOTA TOYOTA_REF="TOY123" 
      TOYOTA_DEALER="Big Dealer" 
      CAR_MAKE="Toyota" 
      CAR_MODEL="Corolla" 
      /> 
</dataset> 

Любые мысли?

ответ

1

Исправлено это самостоятельно. Мне пришлось добавить эту аннотацию JPA к родительскому классу:

import javax.persistence.MappedSuperclass; 

@MappedSuperclass 
public abstract class Car { 
Смежные вопросы