-
JPA 오류 java.lang.IllegalStateException: Cannot call sendError() after the response has been committedJPA 2023. 11. 11. 14:38반응형
java.lang.IllegalStateException: Cannot call sendError() after the response has been committed
Before
게시판
Board.java
@Table(name = "jpa_board") @Entity @Getter @Setter @ToString @NoArgsConstructor public class Board { @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "JPA_BOARD_SEQ") @Column(name="bno") private int bno; //게시판(PK) @Column(name="title", columnDefinition = "varchar(100)") private String title; @Column(name="content", columnDefinition = "varchar(255)") private String content; @CreationTimestamp @Column(name="reg_date") @Temporal(TemporalType.DATE) private Date regDate; @OneToMany(mappedBy = "board") private List<Comment> comments; }
댓글
Comment.java
@Table(name = "jpa_comment") public class Comment { @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "JPA_COMMENT_SEQ") @Column(name="cno") private int cno; //댓굴(PK) @Column(name="content", columnDefinition = "varchar(255)") private String content; @CreationTimestamp // insert시 SYSDATE @Column(name="reg_date") @Temporal(TemporalType.DATE) // 포맷 yyyy-MM-dd private Date regDate; //댓글테이블 N:1 관계설정 @ManyToOne @JoinColumn(name = "bno") private Board board; }
Board 안에 있는 Comment List가 Board를 참조하고 Comment안에 있는 Board가 서로를 참조하면서 무한 재귀함수가 실행 되게 된다. 그래서 오류가 발생한다.
After
Comment.java
@Table(name = "jpa_comment") public class Comment { @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "JPA_COMMENT_SEQ") @Column(name="cno") private int cno; //댓굴(PK) @Column(name="content", columnDefinition = "varchar(255)") private String content; @CreationTimestamp // insert시 SYSDATE @Column(name="reg_date") @Temporal(TemporalType.DATE) // 포맷 yyyy-MM-dd private Date regDate; //댓글테이블 N:1 관계설정 @JsonIgnore @ManyToOne @JoinColumn(name = "bno") private Board board; }
Comment 엔티티안에 Board연결부분에 @JsonIgnore 어노테이션을 추가하면된다.
Comment.java Entity에서 Board.java Entity에게 @JsonIdentityInfo 또는 @JsonIgnore 설정을 해서 무한재귀 관계를 끊어야 한다.
반응형'JPA' 카테고리의 다른 글
JPA JpaRepository 에서 @Query 쿼리작성하여 사용하기(nativeQuery) (0) 2023.11.18 [JPA] 즉시로딩과 지연로딩이란? (FetchType.EAGER, FetchType.LAZY) (0) 2023.11.14 오류 org.hibernate.InstantiationException: No default constructor for entity , with 롬복 (0) 2023.11.09 [JPA] H2 Database, DB의 GenerationType.IDENTITY null문제 (0) 2023.01.29 오류 modelMapper has a non-private no-argument constructor. (0) 2022.09.03