【发布时间】:2018-02-13 13:16:22
【问题描述】:
我在 DAO 层有调用 Oracle 数据库中存储过程的方法:
@Override
public void deleteNode(Integer nodeId) {
SqlParameterSource in = new MapSqlParameterSource()
.addValue("nodeId",nodeId)
.addValue("user", "DUMMY");
SimpleJdbcCall simpleJdbcCall = new SimpleJdbcCall(ebDataSource)
.withSchemaName("SCHEMA")
.withCatalogName("PK_GRAPH_DML")
.withProcedureName("DeleteNode");
simpleJdbcCall.execute(in);
}
我必须测试这个方法。但我想在每次执行此测试后回滚所有更改。
@Test
@Transactional
@Rollback
public void deleteEBNode_ok() {
Integer nodeId = 5714;
ebFlowService.deleteEBNode(nodeId.toString());
EBFlowToolSelect nodeModelFromDatabase = ebFlowService.getNodeById(nodeId);
Assert.assertNull(nodeModelFromDatabase.getNodeId());
}
我尝试用 @Transactional 和 @Rollback 注释我的测试,但没有帮助。
是否可以让我的测试回滚存储过程所做的所有更改?
【问题讨论】:
-
这取决于存储过程。如果它管理自己的事务,则您无能为力,否则它应该参与事务,并且测试方法上的
@Transactional应该是您所需要的。
标签: java oracle transactions