4

DBUnit で単体テストを行いたいのですが、データセットに問題があります。

ここに私の永続化オブジェクトがあります:

@Entity
@Table(name = "personnes")
public class Personne implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer pk;

    @Column
    private String name;
}

そして私のデータセット:

<?xml version='1.0' encoding='UTF-8'?>
<dataset>
    <personnes name="toto"  pk="1" />
</dataset>

私の問題は名前列にあり、次のエラーが発生します。

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

私の列が「名前」であるのに、dbunit が列「NAME」を検索する理由がわかりません。

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

4

4 に答える 4

0

マッピングで列名を指定していないため、基になる ORM フレームワークが列名「NAME」を生成すると思います。

このエラー/警告を解決するには、列名をマッピングに追加できます

@Column( name = "name")

小文字の列名になるか、データセットで大文字表記を使用します

<personnes NAME="toto"  pk="1" />

大文字の列名を残します。

于 2011-07-06T07:57:41.147 に答える
0

データベースのデータ型ファクトリを設定してみてください。

利用可能なすべての工場は、このリンクで見つけることができます。http://dbunit.sourceforge.net/apidocs/org/dbunit/dataset/datatype/IDataTypeFactory.html

データベースに属する工場を選択します。

メソッド setUpDatabaseConfig をテスト クラスに実装し、ファクトリを設定します。

protected void setUpDatabaseConfig(DatabaseConfig config) {
   config.setProperty( DatabaseConfig.PROPERTY_DATATYPE_FACTORY, new OracleDataTypeFactory() );
}
于 2013-07-24T09:54:23.863 に答える
0

以下をtrueに設定する必要があります

DatabaseConfig.FEATURE_CASE_SENSITIVE_TABLE_NAMES

あなたのDatabaseConfigオブジェクト内。

org.dbunit.dataset.NoSuchTableException: スキーマ 'null' にテーブル 'xxx' が見つかりませんでしたを参照してください

于 2012-03-21T08:35:11.750 に答える