【发布时间】:2011-07-11 05:12:00
【问题描述】:
问题标题基本上说明了一切。在 JPA/Hibernate 中是否可以优雅地 防止从数据库中删除实体?我想要的是将实体标记为“隐藏”而不是实际删除它。
我还希望保留Cascade 语义,这样如果我尝试删除拥有其他实体集合的实体,则拥有实体及其集合中的每个实体都会被标记为隐藏而无需任何额外工作除了实现防止删除并将实体标记为隐藏的@PreRemove 处理程序之外,这对我来说是必要的。
这可能吗,还是我需要找出其他方法?
【问题讨论】:
-
您是否尝试使用 JPA 模拟逻辑删除?
-
@Vineet Reynolds - 本质上是的。我希望保留记录,因为该应用程序与移动客户端同步,并且它需要能够告诉客户端已删除的内容。我可以通过在单独的表中保留已删除的所有内容的 id 列表以及删除它的时间戳来解决此问题,但我更希望能够覆盖删除行为,以便它只是隐藏而不是删除它们。