我将数据从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