[main-project] 삽질한 것들

박채은·2023년 3월 16일

Project

목록 보기
12/21

삽질1

발단

<PrfPost 클래스>

@Entity
public class PrfPost extends Auditable {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    @Column(nullable = false)
    private String title;

    @Column(nullable = false)
    private String category;

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

    @Column(nullable = false)
    private String tags;

    @Column(nullable = false)
    private Integer likeCount = 0;

    @OneToMany(mappedBy = "prfPost", cascade = CascadeType.REMOVE)
    @JsonBackReference
    private List<Urls> urls = new ArrayList<>();

    @ManyToOne(fetch = FetchType.LAZY)
    @JsonManagedReference
    @JoinColumn(name = "member_id")
    private Member member;

    @OneToMany(mappedBy = "prfPost", cascade = CascadeType.REMOVE)
    @JsonBackReference
    private List<PrfPostComment> comments = new ArrayList<>();

    public void likeCountUp() {
        this.likeCount++;
    }
    public void likeCountDown() {
        this.likeCount--;
    }
}

PrfPost(게시글)과 url이 양방향 맵핑이 되어있다.(1:N 관계)

postDto로 PrfPost의 필드들과 url 값을 동시에 받아와서 이를 save() 해주는데 저장해주는 순서가 다르면 어떤 일이 발생하는지 궁금했다.

현재 상황

  1. postDto에서 url을 받아와 PrfPost의 List<Urls> urls에 urlId를 제외하고 저장해둔다.(아직 url이 저장되지 않아 urlId가 없기 때문에)

  1. PrfPost을 DB에 save()한다.
  2. PrfPost의 urls를 가져와서 DB에 save()한다.

결론

  1. (3)번을 하고 나서 PrfPost.setUrls()를 하지 않았는데 왜 id값이 수정되는지 궁금했는데 이는 같은 Urls Object이기 때문이였다!

0개의 댓글