Java Spring Rest API TransactionSystemException
我对spring开发非常陌生,因为我不是后台开发人员。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关系上包含一个坐标对
我创建了一个后台来管理运动训练 我有好几次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)
你能用我的代码这样的例子帮助我理解什么是事务错误吗