DbUnit - удалить строки на основе значения поля не первичного ключа - PullRequest
4 голосов
/ 03 сентября 2011

Похоже, что DbUnit использует метаданные JDBC для определения полей первичного ключа и создает оператор удаления с использованием этих полей:

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

Существует ли способ удаления строк на основе значения одного поля составного ключаили значение поля, не являющегося первичным ключом (например, удалить строки, где созданы_дата = xyz)

1 Ответ

3 голосов
/ 03 мая 2012

Вы можете создать 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;
}
...