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