【发布时间】:2011-09-03 01:26:26
【问题描述】:
看起来 DbUnit 正在使用 JDBC 元数据来确定主键字段并使用这些字段构造删除语句:
delete from tbl_name where pk_field1=? and pk_field2=? and pk_field3=?
有没有办法根据复合键的一个字段值或非主键字段的值删除行(例如,删除 created_date = xyz 的行)
【问题讨论】:
看起来 DbUnit 正在使用 JDBC 元数据来确定主键字段并使用这些字段构造删除语句:
delete from tbl_name where pk_field1=? and pk_field2=? and pk_field3=?
有没有办法根据复合键的一个字段值或非主键字段的值删除行(例如,删除 created_date = xyz 的行)
【问题讨论】:
您可以创建一个 QueryDataSet 并将 DatabaseOperation 设置为 DELETE。
例如,如果您正在扩展 DBTestCase:
protected IDataSet getDataSet() {
QueryDataSet queryDataSet = null;
String query = "SELECT * FROM tbl_name pk_field1=? and pk_field2=?";
try {
queryDataSet = new QueryDataSet(super.getConnection());
queryDataSet.addTable("tbl_name",query);
} catch (Exception e) {
e.printStackTrace();
}
return queryDataSet;
}
protected DatabaseOperation getSetUpOperation() throws Exception {
return DatabaseOperation.DELETE;
}
【讨论】: