je méthode dans la couche de DAO qui l'appel de procédure stockée dans la base de données Oracle:Puis-je restaurer après avoir appelé la procédure stockée dans le test 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);
}
Et je dois tester cette méthode. Mais je veux annuler toutes les modifications après chaque exécution de ce test.
@Test
@Transactional
@Rollback
public void deleteEBNode_ok() {
Integer nodeId = 5714;
ebFlowService.deleteEBNode(nodeId.toString());
EBFlowToolSelect nodeModelFromDatabase = ebFlowService.getNodeById(nodeId);
Assert.assertNull(nodeModelFromDatabase.getNodeId());
}
J'ai essayé de annoter mon test par @Transactional
et @Rollback
, mais il n'a pas aidé.
Est-il possible d'effectuer l'annulation de test de toutes les modifications apportées par la procédure stockée?
Cela dépend de la procédure stockée. Si cela gère sa propre transaction, il n'y a pas grand chose à faire, sinon il devrait participer à une transaction et '@ Transactional' sur la méthode de test devrait être tout ce dont vous avez besoin. –