[英]How to implement soft (logical) delete with MongoDB and Spring?
我有MongoDB的Spring网络应用程序。 目前我总是从数据库中永久删除数据。
@Repository
public class SessionRepository extends CrudRepository implements SessionService {
...
@Override
public void insert(Session session) {
saveRoom(session);
getTemplate().insert(session);
}
@Override
public void delete(Session session) {
getTemplate().remove(session);
}
...
}
将此更改为软删除的好方法是什么?
-----------------编辑1 -------------------
我现在理解我应该做的事情,感谢Sarath Nair。 但我不确定如何在Spring中实现它。 我有一个Session对象:
@Document(collection = "session")
public class Session {
@Id
private String id;
private Date startDate;
private Date endDate;
//I just put this here
private boolean deleted = false;
public boolean isDeleted() {
return deleted;
}
public void setDeleted(boolean deleted) {
this.deleted = deleted;
}
...
}
我希望字段boolean isDeleted
存在于数据库中,但我不想通过Web服务发送该信息。 @Transient
不好,因为该字段不会出现在数据库中,也不出现在HTTP响应中。 现在我在HTTP响应中发送deleted: false
。
我该如何编辑Session类?
在集合中有一个名为is_deleted
的附加字段。 对于新文档,插入is_deleted
为false
。 删除时只需将该值更新为该文档的true
。 每当您需要从集合中读取文档时,请为集合传递is_deleted : false
。
使用“isDeleted”字段的解决方案将无效,因为@DbRef仍会检索“isDeleted”记录,我也在玩这个问题。
对于第二个问题,您可以使用自定义SpringHttpMessageConverters和GSON来隐藏“isDeleted”字段。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.