JAVA/프로젝트

Spring Boot: JPA 연관관계 설정하기 -2, 최신순 정렬, 삭제된 게시글 제외 하고 조회

whyHbr 2024. 4. 27. 23:07
728x90
반응형

Post와 Reply 도 1: N 관계이다. 연관 관계를 만들어 줘야 한다.

 

PostEntity 수정

@OneToMany(mappedBy = "post")
private List<ReplyEntity> replyList = List.of();// 빈 리스트를 기본으로

 

PostService 수정 

//답변 같이 보여주기.
// @OneToMany를 통해 자동으로 list를 보내 주므로 필요없어짐
//var replyList = replyService.findAllByPostId(it.getId());
//it.setReplyList(replyList);

 

 

ReplyEntity 추가 :

@ManyToOne
@ToString.Exclude
@JsonIgnore
private PostEntity post; //PostEntity  @OneToMany(mappedBy = "post")에 맞춰 변경

 

ReplyEntity 추가

private final PostRepository postRepository;

 

수정:

public ReplyEntity create(ReplyRequest replyRequest){
    var optionalPostEntity = postRepository.findById(replyRequest.getPostId());

    if(optionalPostEntity.isEmpty()){ //null 일 때
        throw  new RuntimeException("게시글이 존재하지 않습니다. "+ replyRequest.getPostId());
    }
    var entity = ReplyEntity.builder()
            .post(optionalPostEntity.get())
    

 

 

 

 

/board/id/1

이미 삭제된 ("UNREGISTERED") 게시글도 보인다. 

이를 보이지 않게 해보자. 

 

BoardEntity 추가:

@Where(clause = "status = 'REGISTERED'") //clause = 조건절
private List<PostEntity> postList = List.of();

status  = REGISTERED  인 것만 리스트에 내려가게 한다.

 

글을 최신순으로 보고싶다면 boardEntity에 추가한다. 

@OrderBy(clause = "id desc") //아이디 최신순 정렬

728x90