我將數據從MS SQLServer導出到xml文件,然後在運行需要數據庫的單元測試中使用該數據集。我使用dbunit maven插件。如何在使用dbunit插入期間將列排除到HSQLDB
對我來說不幸的是,並不是所有表中的所有列都映射到我的實體類中。例如,我們有一個名爲'member'的表格。 會員表有三列:memberid,membername,memberrank。 當我進行導出時,我會導出所有三列。 但是在我的MemberEntity類中,我只映射了memberid和membername,因爲我的應用程序中不需要memberrank。因此,我將有MemberEntity看起來像這樣:
@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;
...
}
然後,我嘗試測試案例之前插入數據集到HSQLDB:
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映射添加到我的實體類中,則一切順利。 但我無法將列映射添加到我的實體類中。是否有一種簡單的方法(除了手動從導出的數據集中刪除列和關聯的數據)排除該列時(我試圖添加)在執行INSERT時?
是您的問題解決了嗎?我看不到任何評論或接受的答案。 – ManuPK 2012-01-18 15:02:01