@Override
public int execute() {
if(eventHandler.isHandleDeleteEvent(context, em)) {
int result;
DeleteEntityEventImpl e = new DeleteEntityEventImpl(context, em, id);
eventHandler.preDeleteEntityNoTrans(context, em, e);
if(em.hasSecondaryTable() || eventHandler.isDeleteEventTransactional(context, em)) {
result = dao.doTransaction((status) -> {
e.setTransactionStatus(status);
eventHandler.preDeleteEntityInTrans(context, em, e);
int affected = doExecuteDelete();
eventHandler.postDeleteEntityInTrans(context, em, e);
e.setTransactionStatus(null);
return affected;
});
}else{
result = doExecuteDelete();
}
eventHandler.postDeleteEntityNoTrans(context, em, e);
return result;
}else{
return doExecuteDelete();
}
}