0

だから私はこのエラーが発生しています:

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.

Spring JUnit テストのコンテキストで DbUnit を使用して H2 DB にデータを入力しようとするとき。H2 DB の DDL は、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>

何かご意見は?

4

1 に答える 1

1

これを自分で修正しました。この JPA アノテーションを親クラスに追加する必要がありました。

import javax.persistence.MappedSuperclass;

@MappedSuperclass
public abstract class Car {
于 2015-08-12T10:32:53.637 に答える