Exception

java.lang.IllegalStateException: Cannot call sendError() after the response has been committed

Jungsoomin :) 2020. 12. 11. 14:30

JPA 방향 맵핑 중 Response 보낼 때에 발생.

 

N으로 맵핑되는 필드에 @JsonIgnore .

implementation "com.fasterxml.jackson.core:jackson-databind"
@Entity
public class Account implements Serializable {

    @Id @GeneratedValue
    private Long id;

    private String username;
    @Transient
    private String password;

    private String email;

    @OneToMany(mappedBy = "account", fetch = FetchType.LAZY ,cascade = CascadeType.ALL)
    @JsonIgnore
    private List<AccountDetail> accountDetails = new ArrayList<>();

    public Account() {}

    public Account(AccountBuilder builder) {
        this.id = builder.id;
        this.username = builder.username;
        this.password = builder.password;
        this.email = builder.email;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public void setAccountDetails(List<AccountDetail> accountDetails) {
        this.accountDetails = accountDetails;
    }

    public Long getId() {
        return id;
    }

    public String getUsername() {
        return username;
    }

    public String getPassword() {
        return password;
    }

    public String getEmail() {
        return email;
    }

    public List<AccountDetail> getAccountDetails() {
        return accountDetails;
    }

    public static AccountBuilder builder(){
        return new AccountBuilder();
    }

    public static class AccountBuilder{
        private Long id;

        private String username;

        private String password;

        private String email;

        private AccountBuilder() {}

        public AccountBuilder setId(Long id) {
            this.id = id;
            return this;
        }

        public AccountBuilder setUsername(String username) {
            this.username = username;
            return this;
        }

        public AccountBuilder setPassword(String password) {
            this.password = password;
            return this;
        }

        public AccountBuilder setEmail(String email) {
            this.email = email;
            return this;
        }

        public Account build(){
            return new Account(this);
        }
    }
}