2

org.hibernate.exception.SQLGrammarExceptionJPA と Spring を使用する Java クラスに対して JUnit テストを実行すると、Oracle エラーが発生します。

ORA-00904: "ALIAS"."COLUMN_NAME": invalid identifier

奇妙なことに、JUnit テストは開発データベースに対して実行すると機能しますが、継続的インテグレーション ビルドに使用するデータベース (両方とも Oracle データベース) に対して実行すると失敗します。

したがって、これは、後者の d/b に何かが欠けているか、間違っていることを示唆しています。ただし、参照されているテーブルが両方のデータベースで同一であり、エラーが参照している列 COLUMN_NAME が含まれていることを二重 (および三重) に確認しました。

詳細情報 - JUnit テストで呼び出される DAO Java クラスは、javax.persistence.EntityManager を使用します。

MyClass myObject = entityManager.find(MyClass.class, idNumber);

MyClass JPA エンティティ クラスは、Oracle テーブルにマップされます。

@Configurable
@Entity
@Table(name = "MyTable", schema = "MySchema")
public class MyClass implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "MY_SEQ")
    @SequenceGenerator(name = "MY_SEQ", sequenceName = "MY_SEQ", allocationSize = 1)
    @Column(name = "ID")
    protected BigDecimal id;

    @Column(name = "COLUMN_NAME")
    private String columnName;
    ...
}

両方のデータベースのデータベース テーブルのカラム COLUMN_NAME は VARCHAR2(50) で、NULL 可能です。

バージョン:

ジャワ - 1.6

春 - 3.1.1

オラクル - 11.2.0.3.0

ご協力いただきありがとうございます。

4

2 に答える 2