0
私は、Oracleデータベースにストアドプロシージャを呼び出すDAO層での方法があります。Javaテストでストアドプロシージャを呼び出した後にロールバックできますか?
@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'は必要なものだけでなければなりません。 –