Spring Rest API TransactionSystemException - PullRequest
       10

Spring Rest API TransactionSystemException

1 голос
/ 30 сентября 2019

Я очень новичок в весенней разработке, потому что я не бэк-разработчик.
Я создаю бэк для управления спортивными тренировками.

У меня есть несколько раз TransactionSystemException как Exceptionorg.springframework.transaction.TransactionSystemException: Could not commit JPA transaction; nested exception is javax.persistence.RollbackException: Error while committing the transaction

Я не понимаю, что это значит.

У меня есть класс Person, который содержит объект Coordinates в отношении @OneToOne.
Каждый класс имеет класс Serviceу которого есть метод добавления.

В методе добавления PersonService я вызываю метод добавления Coordinates, который сохраняет и возвращает сохраненный объект.

Это метод добавления PersonClass

    public ResponseService<ObjectCreatedModel<UUID, PersonneMorale>> add(PersonneMorale personneMorale) {
        String messageErreur = TAG + " - add - ";

        StatusReturn status = StatusReturn.ERROR;
        String message = null;
        ObjectCreatedModel<UUID, PersonneMorale> objectCreatedModel = null;

        if (personneMorale != null) {
            if (personneMorale.getId() == null) {
                personneMorale.setId(UUID.randomUUID());

                try {
                    // Gestion des coordonnees
                    ResponseService<ObjectCreatedModel<UUID, Coordonnees>> responseServiceCoordonnees =
                            coordonneesService.add(personneMorale.getCoordonnees());

                    if (responseServiceCoordonnees.isSuccess() || responseServiceCoordonnees.exist()) {
                        ResponseService<Coordonnees> responseServiceCoordonneesGet = coordonneesService
                                .getOne(responseServiceCoordonnees.getObjectReturn().getId());
                        Coordonnees coordonnees = responseServiceCoordonneesGet.getObjectReturn();

                        personneMorale.setCoordonnees(coordonnees);
                        personneMorale = personneMoraleRepository.save(personneMorale);

                        if (personneMorale != null) {
                            status = StatusReturn.SUCCESS;

                            objectCreatedModel = new ObjectCreatedModel<>(personneMorale.getId(), null);
                        } else {
                            message = messageErreur + StringResource.E_OCCURRED;
                        }
                    } else {
                        status = responseServiceCoordonnees.getStatusReturn();
                        message = responseServiceCoordonnees.getMessage();
                    }
                } catch (ConstraintViolationException violationException) {
                    status = StatusReturn.EXCEPTION;
                    message = messageErreur + ConstraintViolationReader.extractException(violationException);
                } catch (Exception ex) {
                    status = StatusReturn.EXCEPTION;
                    message = messageErreur + ex.toString();
                }
            } else {
                message = messageErreur + StringResource.E_MUST_NULL;
            }
        } else {
            message = messageErreur + StringResource.E_SET_PARAMETER;
        }

        return new ResponseService<>(status, message, objectCreatedModel);
    }

Это метод добавления CoordinatesService

    public ResponseService<ObjectCreatedModel<UUID, Coordonnees>> add(Coordonnees coordonnees) {
        StatusReturn status = StatusReturn.ERROR;
        String message = "";
        ObjectCreatedModel<UUID, Coordonnees> objectCreatedModel = null;

        if (coordonnees != null) {
            if (coordonnees.getIdCoordonnees() == null) {
                try {
                    coordonnees.setIdCoordonnees(UUID.randomUUID());

                    Coordonnees coordonneesBase = coordonneesRepository.save(coordonnees);

                    if (coordonneesBase != null) {
                        status = StatusReturn.SUCCESS;
                        objectCreatedModel = new ObjectCreatedModel<>(coordonneesBase.getIdCoordonnees(), null);
                    } else {
                        message = StringResource.E_ERROR_OCCURRED;
                    }
                } catch (ConstraintViolationException violationException) {
                    status = StatusReturn.EXCEPTION;
                    message = "Exception" + ConstraintViolationReader.extractException(violationException);
                } catch (Exception ex) {
                    status = StatusReturn.EXCEPTION;
                    message = "Exception" + ex.toString();
                }
            } else {
                message = "Coordonnées" + ErrorsString.ERROR_COMMON_ID_MUST_BE_EMPTY;
            }
        } else {
            message = ErrorsString.ERROR_COORDINATES_MANDATORY;
        }

        return new ResponseService<>(status, message, objectCreatedModel);
    }

Ошибка возникает, когда CoordinatesService пытается сохранить координаты и передать catch (Exception e)

Не могли бы вы помочь мне понять, что ошибка транзакциизначит с примером вроде моего кода пожалуйста?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...