【问题标题】:How to use jpa or hibernate to prevent the deletion of the table如何使用jpa或hibernate防止删除表
【发布时间】:2018-07-05 05:43:51
【问题描述】:

我有存档表,我不想被删除,所以如何使用 jpa 或 hibernate 来防止删除表(删除方法必须抛出错误),或者在删除时实际执行更新(状态 = 已删除) .是否有任何注释或任何技术可以做到这一点?

【问题讨论】:

  • 在数据库中使用触发器会很容易。

标签: spring postgresql hibernate jpa


【解决方案1】:

您可以使用实体回调@PreRemove 并抛出运行时异常。

https://docs.jboss.org/hibernate/orm/4.0/hem/en-US/html/listeners.html

【讨论】:

  • 谢谢!这很简单,非常适合我的问题
【解决方案2】:

@SqlDelete 注释允许您覆盖 Hibernate 执行的默认 DELETE 语句,因此我们替换为 UPDATE 语句。因此,删除实体最终会将已删除的列更新为 true

@SQLDelete(sql = "UPDATE tag SET deleted = true WHERE id = ?")

@MappedSuperclass
public abstract class BaseEntity {

    private boolean deleted;
}

@Entity(name = "Tag")
@Table(name = "tag")
@SQLDelete(sql =
    "UPDATE tag " +
    "SET deleted = true " +
    "WHERE id = ?")
public class Tag extends BaseEntity {

    @Id
    private String id;

    //Getters and setters omitted for brevity
}

【讨论】:

    猜你喜欢
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-15
    • 1970-01-01
    • 2015-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多