최대 절전 모드는 자동 업데이트 내 기업은 경우에도 오류가 발생한 사

0

질문

나는 하나의 엔티티는"프로그램입니다." 나는 몇 가지 작업을 합니다. 하지만 내가 알지 못하는 방법,또는 나의 엔티티가 업데이트되어도 나는 예외는 아니다. 그래서 사람이 도움이 될 수 있습니다 나를 해결하기 위해 밖으로 이 문제를 해결합니다.

컨트롤러

@GetMapping("/testtransaction/{tid}")
public ApiResponse testTransaction(@PathVariable("tid") String tid){
     return gsService.testTransaction(tid);
}

서비스

@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = Exception.class)
public ApiResponse testTransaction(String tid) {
    ApiResponse apiResponse = new ApiResponse();
    try {
        Optional<Program> existProgram = programRepository.findById(tid);
        if(existProgram.isPresent()) {
            //For testing I am setting random value
            existProgram.get().setProgramName("tid_"+(Math.floor(Math.random() * 90 + 10)));
                
            try {
                int err = 8/0;
            }catch(Exception e) {
                throw new EntityNotFoundException(Program.class, "prog cd", tid);
            }
                    
            programRepository.save(existProgram.get());
            apiResponse.setData("Success");
        }else {
            apiResponse.setError("Program details not found for "+tid);
            apiResponse.setStatusCode(500);
        }
    }catch(Exception e) {
        apiResponse.setError("Something went wrong while testing.");
        apiResponse.setStatusCode(500);
        return apiResponse;
    }
    return apiResponse;
}

엔터티

package com.edudb.model;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.Size;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
@Entity
@JsonInclude(value=Include.NON_NULL)
@Table(name = "PROGRAM_MASTER")
public class Program {
    @Id
    @Column(name = "PROGRAM_CD")
    private String programCd;
    
    @Column(name = "PROGRAM_NAME")
    @Size(min=1, max=100, message = "Minimum 1 & maximum 100 characters only")
    private String programName;
    
    @Column(name="ENT_BY")
    @Size(min=1, max=12, message = "Minimum 1 & maximum 12 characters only")
    private String entBy;
    
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern="dd MMM yyyy")  
    @Column(name = "ENT_DT")
    @Temporal(TemporalType.DATE)
    private Date entDt;
    
    @Column(name="DEL_BY")
    @Size(min=1, max=12, message = "Minimum 1 & maximum 12 characters only")
    private String delBy;
    
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern="dd MMM yyyy")  
    @Column(name = "DEL_DT")
    @Temporal(TemporalType.DATE)
    private Date delDt;
    
    @Column(name="LAST_UPDT_BY")
    @Size(min=1, max=12, message = "Minimum 1 & maximum 12 characters only")
    private String updtBy;
    
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern="dd MMM yyyy")  
    @Column(name = "LAST_UPDT_DT")
    @Temporal(TemporalType.DATE)
    private Date updtDt;
}

응답 내가 무엇을 얻기에서 우편 배달

{
    "statusCode": 500,
    "error": "Something went wrong while testing."
}

봄 부트 로그인

2021-11-23 10:34:20 DEBUG --- origin:null
 : com.datanet.filter.SimpleCorsFilter     2021-11-23 10:34:20 DEBUG --- 
    select
        program0_.program_cd as program_cd1_83_0_,
        program0_.del_by as del_by2_83_0_,
        program0_.del_dt as del_dt3_83_0_,
        program0_.ent_by as ent_by4_83_0_,
        program0_.ent_dt as ent_dt5_83_0_,
        program0_.program_name as program_name6_83_0_,
        program0_.last_updt_by as last_updt_by7_83_0_,
        program0_.last_updt_dt as last_updt_dt8_83_0_ 
    from
        program_master program0_ 
    where
        program0_.program_cd=?
 : org.hibernate.SQL                       2021-11-23 10:34:20 TRACE --- binding parameter [1] as [VARCHAR] - [demo]
 : ibernate.type.descriptor.sql.BasicBinder2021-11-23 10:34:20 DEBUG --- 
    update
        program_master 
    set
        del_by=?,
        del_dt=?,
        ent_by=?,
        ent_dt=?,
        program_name=?,
        last_updt_by=?,
        last_updt_dt=? 
    where
        program_cd=?
 : org.hibernate.SQL                       2021-11-23 10:34:20 TRACE --- binding parameter [1] as [VARCHAR] - [john]
 : ibernate.type.descriptor.sql.BasicBinder2021-11-23 10:34:20 TRACE --- binding parameter [2] as [DATE] - [2021-10-06]
 : ibernate.type.descriptor.sql.BasicBinder2021-11-23 10:34:20 TRACE --- binding parameter [3] as [VARCHAR] - [peter]
 : ibernate.type.descriptor.sql.BasicBinder2021-11-23 10:34:20 TRACE --- binding parameter [4] as [DATE] - [2021-10-06]
 : ibernate.type.descriptor.sql.BasicBinder2021-11-23 10:34:20 TRACE --- binding parameter [5] as [VARCHAR] - [tid_52.0]
 : ibernate.type.descriptor.sql.BasicBinder2021-11-23 10:34:20 TRACE --- binding parameter [6] as [VARCHAR] - [john]
 : ibernate.type.descriptor.sql.BasicBinder2021-11-23 10:34:20 TRACE --- binding parameter [7] as [DATE] - [2021-10-06]
 : ibernate.type.descriptor.sql.BasicBinder2021-11-23 10:34:20 TRACE --- binding parameter [8] as [VARCHAR] - [demo]
 : ibernate.type.descriptor.sql.BasicBinder

그래서 만약 누군가가 직면 이 문제는 이전에,할 수 있습을 해결하기 위해 나를 도와주세이:(

hibernate jpa rollback spring-boot
2021-11-23 05:18:34
1

최고의 응답

0

을 추가하여 다음과 같은 줄의 코드를 잡을 또는 마지막으로 끝나거나 fucntion,최대 절전 모드 롤백체 트랜잭션이 있습니다.

TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
2021-11-23 07:10:15

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................