DbUnit - 根据非主键字段值删除行

时间:2011-09-03 01:26:26

标签: junit dbunit

看起来DbUnit正在使用JDBC元数据来确定主键字段并使用这些字段构造delete语句:

delete from tbl_name where pk_field1=? and pk_field2=? and pk_field3=?

有没有办法根据复合键的一个字段值或非主键字段的值删除行(例如删除created_date = xyz的行)

1 个答案:

答案 0 :(得分:3)

您可以创建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;
}