MS SQLServerからxmlファイルにデータをエクスポートし、データベースを必要とする単体テストを実行する際にそのデータセットを使用します。私はそれにdbunit mavenプラグインを使用します。dbunitを使用してINSERT中にHSQLDBに除外する方法
私にとって残念ながら、一部のテーブルのすべての列が自分のエンティティクラスにマッピングされているわけではありません。
例として、「member」というテーブルがあります。 メンバーテーブルには、memberid、membername、memberrankの3つのカラムがあります。 エクスポートを実行すると、3つの列すべてがエクスポートされます。 しかし、私のMemberEntityクラスでは、私のアプリケーションにmemberrankは必要ないので、私はmemberidとmembernameだけをマッピングします。だから私はMemberEntityはこのように見ているだろう:その後、私はテストケースの前にHSQLDBにデータセットを挿入しよう
@Entity
@Table(name = "member")
public class MemberEntity {
@Id
@GeneratedValue()
@Column(name = "memberid", nullable = false)
private Integer memberid;
@Column(name = "membername", nullable = false)
private String membername;
...
}
:
IDatabaseConnection conn = new DatabaseConnection(((SessionImpl) (entityManager.getDelegate())).connection());
IDataSet dataset = new XmlDataSet(
resourceLoader.getResource("classpath:dataset.xml").getInputStream());
conn.getConfig().setProperty("http://www.dbunit.org/properties/datatypeFactory", new MsSqlDataTypeFactory());
DatabaseOperation.CLEAN_INSERT.execute(conn, dataset);
この時点で、私は列MemberRankを言って例外を取得します存在しない。それは次のようなものです:
org.dbunit.dataset.NoSuchColumnException: MEMBER.MEMBERRANK - (Non-uppercase input column: memberrank) in ColumnNameToIndexes cache map. Note that the map's column names are NOT case sensitive.
データセットから列を削除すると、すべて正常です。 memberRankマッピングをEntityクラスに追加すると、すべてうまく行きます。 しかし、列マッピングを自分のEntityクラスに追加することはできません。 INSERTを実行したときにその列が追加されないように(削除しようとしている)ことを排除する簡単な方法(エクスポートされたデータセットから列と関連するデータを手動で削除する以外)はありますか?
問題が解決しましたか?私は、コメントや承認された答えを見ることができませんでした。 – ManuPK