【问题标题】:JPA OneToMany delete on parent don't remove linked entities父级上的 JPA OneToMany 删除不删除链接的实体
【发布时间】:2021-04-08 17:07:19
【问题描述】:

我正在使用 SpringBoot 和 JPA + Hibernate。

我有这些实体:

@Entity
@Table(name = "post")
@AllArgsConstructor @NoArgsConstructor
@Getter @Setter
public class Item extends BaseEntity {

    @Id
    @Column(name = "id")
    @Type(type = "uuid-char")
    private UUID uuid = UUID.randomUUID();

    @OneToMany(mappedBy = "post", orphanRemoval=true, fetch = FetchType.EAGER)
    @MapKey(name="userId")
    private Map<UUID, Share> shares;

    .... 

    @CreationTimestamp
    @Column(name = "creation_date")
    @Setter(AccessLevel.NONE)
    private Instant creationDate;

    @UpdateTimestamp
    @Column(name = "last_mod_date")
    @Setter(AccessLevel.NONE)
    private Instant lastModificationDate;

}


@Entity
@Table(name = "comment"
@AllArgsConstructor @NoArgsConstructor
@Getter @Setter
public class Comment extends BaseEntity {

    @Id
    @Column(name = "id")
    @Type(type = "uuid-char")
    @Setter(AccessLevel.NONE)
    private UUID uuid = UUID.randomUUID();

    @ManyToOne(fetch = FetchType.LAZY)
    @NotNull()
    @JoinColumn(name = "post_id")
    private Post post;

    .....

    @CreationTimestamp
    @Column(name = "creation_date")
    @Setter(AccessLevel.NONE)
    private Instant creationDate;

    @UpdateTimestamp
    @Column(name = "last_mod_date")
    @Setter(AccessLevel.NONE)
    private Instant lastModificationDate;
}

@Test
@Transactional
public void testDeleteItem() {
    itemRepo.delete(item);
    itemRepo.flush();
}

当我尝试删除父实体(帖子)时,所有相关实体的评论都保留在数据库中。 为什么级联删除不起作用?

【问题讨论】:

标签: java spring-boot hibernate jpa


【解决方案1】:

OrphanRemoval 不起作用。改用 cascade = CascadeType.ALL

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-09
    • 1970-01-01
    • 2017-10-23
    • 2015-09-12
    • 2014-11-16
    • 1970-01-01
    • 1970-01-01
    • 2016-04-21
    相关资源
    最近更新 更多