JPA onDelete 옵션

정명진·2023년 8월 9일
0
post-custom-banner

이번에는 잘 사용하지 않던 OnDelete 옵션을 적용해봤다.

부모 삭제시 자식까지 한번에 삭제하는 기능이다.

컨텐츠 제거시 컨텐츠 이미지까지 한번에 제거해야 했는데, 쿼리로 작성하자니 조금 번거로워서 해당 옵션을 적용했다.

컨텐츠

class ContentJpaEntity(
    var name: String = "",
    var url: String = "",
    var memo: String = "",
    @Enumerated(EnumType.STRING)
    var contentType: ContentType = ContentType.URL,
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "user_id")
    var user: UserJpaEntity? = null,
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "folder_id")
    var folder: FolderJpaEntity? = null,

    @OneToOne(mappedBy = "content", fetch = FetchType.LAZY)
    var thumbnailImage: ThumbnailImageJpaEntity? = null,
    @OneToMany(fetch = FetchType.LAZY, mappedBy = "content")
    var contentHashTags: MutableSet<ContentHashTagJpaEntity> = mutableSetOf(),
    @Id
    val id: String = uuid()
)

이미지

class ThumbnailImageJpaEntity(
    var imageUrl: String = "",
    @OneToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "content_id")
    @OnDelete(action = OnDeleteAction.CASCADE)
    var content: ContentJpaEntity? = null,
    @Id
    val id: String = uuid()
)

해결 완료

profile
개발자로 입사했지만 정체성을 잃어가는중... 다시 준비 시작이다..
post-custom-banner

0개의 댓글