我有一个 baseDAO
,其中包含用于基本 CRUD
操作的方法。对于每个操作,我们都在执行 getJpaTemplate.xxx()
操作。
代码在 production 中运行良好,但现在我们必须为 DAO
层编写 UTs
,并且我们正在使用 DBUnit
.
我看了示例并编写了 DBUnit
类,我观察到读取 操作正常,但是删除、更新 和创建 操作根本不起作用。
当我们尝试调用 DAO.save(object)
时,它不会抛出任何异常,它会转到下一行,但是当我尝试打开表并查看值时,新的未插入行事务失败或抛出任何异常。
我怀疑连接可能有问题。
作为引用,我附加了 getConnection()
方法。
protected IDatabaseConnection getConnection() throws Exception {
Connection con = dataSource.getConnection();
DatabaseConnection connection = new DatabaseConnection(con);
DatabaseConfig config = connection.getConfig();
config.setProperty(DatabaseConfig.PROPERTY_DATATYPE_FACTORY,new oracleDataTypeFactory());
return connection;
}
我们有另一种方法,它在 setup ()
中调用,用于填充 XML
文件中的数据,效果很好。仅供引用,我在此处添加代码。
protected void insertData (String xmlDataFilePath) {
IDatabaseConnection dbConnection= getConnection();
TransactionOperation.CLEAN_INSERT.execute(dbConnection,getDataSet(xmlDataFilePath));
connection = jPATransactionManager.getDataSource().getConnection();
connection.setAutoCommit(false);
savepoint = connection.setSavepoint("Data inserted in db");
dbConnection.close();
}
如果没有看到数据库中插入的新行,我不确定如何进一步进行。
因为我尝试过
getJpaTemplate().save(object);
getJpaTemplate().load(ClassName.class, object's id);
返回 null
并且在 db 表中也没有 entry。
有什么建议吗?
提前致谢。
乙脑。
最佳答案
savepoint = connection.setSavepoint("Data inserted in db");
确定保存点何时被提交? 你能把所有相关的 API 代码放在这里吗?
关于java - 持久化数据的 DBUnit 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11681618/