J'insère des enregistrements dans un couple de tables à savoir Dept
et Emp
. Si la table Dept
est créée avec succès alors seulement je veux insérer des enregistrements dans la table Emp
. En outre, si l'insertion de Emp
échoue, je veux annuler toute la transaction qui inclut à la fois l'annulation de Emp
ainsi que les tables Dept
.Spring: Propagation.REQUIRED ne fonctionne pas
J'ai essayé en utilisant Propagation.REQUIRED
comme indiqué ci-dessous:
Java Fichier
public void saveEmployee(Employee empl){
try {
jdbcTemplate.update("INSERT INTO EMP VALUES(?,?,?,?,?)",empl.getEmpId(),empl.getEmpName(),
empl.getDeptId(),empl.getAge(),empl.getSex());
} catch (DataAccessException e) {
e.printStackTrace();
}
}
@Transactional(propagation=Propagation.REQUIRED)
public void saveRecords(){
saveDepartment(dept);
saveEmployee(empl);
}
context.xml
<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
Problème:
Même si une insertion dans la table Emp
échoue, l'insertion Dept
devient persistante, ce que je ne veux pas. Je veux tout annuler.
Veuillez nous suggérer.
Vous attrapez l'exception ... –