Hallo zusammen,
ich habe eine Delete - Methode. Vor dem Löschen des "Jobs" sollen davor erst noch die Berechtigungen gelöscht werden.
Nun kann es aber ja sein, dass irgendwas schief läuft beim Löschen des Jobs (die letzten 2 Zeilen). Dann sind aber die Berechtigungen zuvor schon gelöscht worden.
Wie kann ich das schaffen, dass die Berechtigungen auch nur gelöscht werden, wenn alles "successful" war? Also irgendwie ein Rollback der zuvor gelöschten Berechtigungen quasi?
ich habe eine Delete - Methode. Vor dem Löschen des "Jobs" sollen davor erst noch die Berechtigungen gelöscht werden.
Nun kann es aber ja sein, dass irgendwas schief läuft beim Löschen des Jobs (die letzten 2 Zeilen). Dann sind aber die Berechtigungen zuvor schon gelöscht worden.
Wie kann ich das schaffen, dass die Berechtigungen auch nur gelöscht werden, wenn alles "successful" war? Also irgendwie ein Rollback der zuvor gelöschten Berechtigungen quasi?
Code:
public void deleteJob(Job job) throws JobNotFoundException,
JobCurrentlyActiveException {
if (job == null) {
throw new JobNotFoundException("This Job with doesn´t exist");
}
// Permissions davor löschen
try {
List<Permission> permissionList = permissionService
.findAllPermissionByJob(job.getId());
for (Permission p : permissionList) {
entityManager.remove(p);
}
} catch (Exception e) {
}
// Derzeitige Job kann nicht gelöscht werden
try {
ApplicationInfo applicationInfo = applicationInfoService
.findApplicationInfoByCurrentIndicator();
if (applicationInfo.getCurrentJob().equals(job)) {
throw new JobCurrentlyActiveException(
"Der derzeitige Job kann nicht gelöscht werden");
}
} catch (ApplicationInfoNotFoundException e) {
}
Job managedJob = entityManager.find(Job.class, job.getId());
entityManager.remove(managedJob);
}