Java Spring Rest API TransactionSystemException

Java Spring Rest API TransactionSystemException,java,spring,rest,api,spring-transactions,Java,Spring,Rest,Api,Spring Transactions,我对spring开发非常陌生,因为我不是后台开发人员。 我创建了一个后台来管理运动训练 我有好几次TransactionSystemException,比如 Exceptionorg.springframework.transaction.TransactionSystemException:无法提交JPA事务;嵌套异常为javax.persistence.RollbackException:提交事务时出错 我不明白这是什么意思 我有一个类Person,它在@OneToOne关系上包含一个坐标对

我对spring开发非常陌生,因为我不是后台开发人员。
我创建了一个后台来管理运动训练

我有好几次TransactionSystemException,比如
Exceptionorg.springframework.transaction.TransactionSystemException:无法提交JPA事务;嵌套异常为javax.persistence.RollbackException:提交事务时出错

我不明白这是什么意思

我有一个类Person,它在
@OneToOne
关系上包含一个坐标对象。
每个类都有一个具有添加方法的服务类

在PersonService的add方法中,我调用坐标add方法来保存并返回保存的对象

这是PersonClass的add方法

    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);
    }
公共响应服务添加(人员士气){
字符串messageErreur=TAG+“-add-”;
StatusReturn status=StatusReturn.ERROR;
字符串消息=null;
ObjectCreatedModel ObjectCreatedModel=null;
如果(人员士气!=null){
if(personneTailo.getId()==null){
setId(UUID.randomuid());
试一试{
//库多涅斯宫
响应服务响应服务协调员=
add(personnesteriod.getCoordonnees());
if(responseServiceCoordonnes.issucess()| | responseServiceCoordonnes.exist()){
ResponseService ResponseService CoordonnesGet=CoordonnesService
.getOne(responseServiceCoordonnees.getObjectReturn().getId());
Coordonnees Coordonnees=ResponseServiceCoordonnesGet.getObjectReturn();
人员士气。设置协调人(协调人);
人员士气=人员士气储存。保存(人员士气);
如果(人员士气!=null){
status=StatusReturn.SUCCESS;
objectCreatedModel=新的objectCreatedModel(personedModel.getId(),null);
}否则{
message=messageErreur+StringResource.E_发生;
}
}否则{
status=responseServiceCoordonnes.getStatusReturn();
message=responseServiceCoordonnes.getMessage();
}
}捕获(ConstraintViolationException违反异常){
status=StatusReturn.EXCEPTION;
message=messageErreur+ConstraintViolationReader.extractException(violationException);
}捕获(例外情况除外){
status=StatusReturn.EXCEPTION;
message=messageErreur+ex.toString();
}
}否则{
message=messageErreur+StringResource.E_必须为空;
}
}否则{
message=messageErreur+StringResource.E_SET_参数;
}
返回新的ResponseService(状态、消息、objectCreatedModel);
}
这是CoordinateService的添加方法

    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);
    }
公共响应服务添加(Coordonnees Coordonnees){
StatusReturn status=StatusReturn.ERROR;
字符串消息=”;
ObjectCreatedModel ObjectCreatedModel=null;
if(coordonnees!=null){
if(coordonnees.getIdCoordonnees()==null){
试一试{
setIdCoordonnees(UUID.randomUUID());
Coordonnes coordonneesBase=CoordonnesRepository.save(Coordonnes);
如果(CoordonnesBase!=null){
status=StatusReturn.SUCCESS;
objectCreatedModel=新的objectCreatedModel(CoordonnesBase.getIdCoordonnees(),null);
}否则{
message=StringResource.E\u发生错误;
}
}捕获(ConstraintViolationException违反异常){
status=StatusReturn.EXCEPTION;
message=“Exception”+ConstraintViolationReader.extractException(violationException);
}捕获(例外情况除外){
status=StatusReturn.EXCEPTION;
message=“Exception”+例如toString();
}
}否则{
message=“Coordonnées”+ErrorsString.ERROR\u COMMON\u ID\u必须为空;
}
}否则{
message=ErrorsString.ERROR\u坐标\u必填;
}
返回新的ResponseService(状态、消息、objectCreatedModel);
}
当CoordinateService尝试保存坐标并传递给捕获(异常e)

你能用我的代码这样的例子帮助我理解什么是事务错误吗