我有不想删除的存档表,因此如何使用jpa或休眠模式来防止删除表(删除方法必须抛出错误),或者在删除时确实进行了更新(状态=已删除) 。是否有任何注释或技术可以这样做?
答案 0 :(得分:1)
您可以使用实体回调@PreRemove并引发运行时异常。
https://docs.jboss.org/hibernate/orm/4.0/hem/en-US/html/listeners.html
答案 1 :(得分:0)
@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
}