Java 通过在JPA中设置条目的状态来删除DB中的条目
我的团队决定不从数据库中删除条目,而是给它们一个状态,如Java 通过在JPA中设置条目的状态来删除DB中的条目,java,hibernate,jpa,Java,Hibernate,Jpa,我的团队决定不从数据库中删除条目,而是给它们一个状态,如ACTIVE或DELETED 当我收集其他实体时,问题就出现了,我们称之为Customer: @Entity public class Customer { @ManyToMany private List<Order> orders; private MyEnumStatus status; ... } 我的问题是-是否可以将状态字段(订单实体)应用于此场景?我的意思是以某种方式覆盖此行为
ACTIVE
或DELETED
当我收集其他实体时,问题就出现了,我们称之为Customer
:
@Entity
public class Customer {
@ManyToMany
private List<Order> orders;
private MyEnumStatus status;
...
}
我的问题是-是否可以将状态字段(订单实体)应用于此场景?我的意思是以某种方式覆盖此行为以设置状态,而不是删除条目。您需要实现逻辑删除。有关更多信息,请参见此。是的 您可以使用事件或拦截器。这两种情况都在中描述。这个选项很强大,但很复杂。玩它的风险由你自己承担
软删除可能是更好的选择@mdatwood的链接显示了一种方法。有一个更完整的例子。不要忘记调整所有查询,只返回未删除的对象。示例中提到了这一点。您可以在客户实体中使用@SQLDelete注释覆盖remove()方法实现,如下所示:
@Entity
@SQLDelete(sql="UPDATE customer SET status = 'deleted' WHERE id = ?")
public class Customer {
@ManyToMany
private List<Order> orders;
}
@实体
@SQLDelete(sql=“更新客户集状态='deleted'其中id=?”)
公共类客户{
@许多
私人名单订单;
}
@Entity
@SQLDelete(sql="UPDATE customer SET status = 'deleted' WHERE id = ?")
public class Customer {
@ManyToMany
private List<Order> orders;
}