게시판 프로젝트(3)

Beomi·2023년 12월 8일
  • 게시판과 댓글 1:n관계 설정하기
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ToString
@Builder
@Entity(name = "comment")
public class CommentEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;


    @ManyToOne
    @JsonIgnore
    @ToString.Exclude
    @JoinColumn(name = "board_id")
    private BoardEntity boardEntity;

    private String userName;

    @Column(columnDefinition = "TEXT")
    private String content;

    private LocalDateTime commentAt;

    private String status;
}
  • ManyToOne(1:n 관계 설정)
  • JoinColumn(연관 시킬 컬럼을 설정)
    처음에 이 두개만 설정을 했을 때, 무한 루프에 빠지는 현상이 발생
  • ToString.Exclude, JsonIgnore을 추가함으로써 무한 루프 현상을 해결
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ToString
@Builder
@Entity(name = "board")
public class BoardEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String userName;

    private String title;

    @Column(columnDefinition = "TEXT")
    private String content;

    private LocalDateTime boardAt;

    private String status;

    @OneToMany(mappedBy = "boardEntity")
    @Where(clause = "status = 'REGISTERED'")
    @org.hibernate.annotations.OrderBy(clause = "id desc")
    private List<CommentEntity> commentList = List.of();
}
  • 1:n관계를 나타냄
  • status가 REGISTERED인 행들만 조회하도록
  • 결과를 정렬
  • 엔티티와 일대다 관계를 나타내는 컬렉션 필드 선언

Jpa설정

public interface BoardRepository extends JpaRepository<BoardEntity, Long> {
}
public interface CommentRepository extends JpaRepository<CommentEntity, Long> {
}

0개의 댓글