2012-03-02 51 views
1

我们正在将Mongo与Morphia作图。 Morphia具有许多优化功能,允许文档中的更新只应用于已更改的字段。是否可以使用Morphia简单更新Mongo中的所有字段?

这是赞赏,但在这一刻,我需要未经优化的情况。我只想保存一个实体,而不用担心哪些字段发生了变化。

当然,我可以简单地调用save(),但这会调用生命周期方法,就好像我正在创建一个新对象一样。

也许这就是答案:save()并让我的生命周期方法足够聪明,可以检测到这是“重新保存”而不是创建新实体。

如果有更好的方法,我当然会很感激听到它。

+0

出于兴趣:为什么这样的问题有被调用的生命周期方法? – xeraa 2012-03-03 00:06:13

+0

不是。但是,任何时候我开始研究框架的运作方式时,我都会努力确保正确使用它。 – 2012-03-03 04:15:21

回答

1

我prepersist看起来是这样的:

@PrePersist 
public void prePersist() { 
    creationDate = (creationDate == null) ? new Date() : creationDate; 
    lastChange = (lastChange == null) ? creationDate : new Date(); 
} 

如果你想检查是否有实体已经坚持,我可能会检查id为空值,因为它是第一个保存自动生成。

+0

有许多可能的解决方案,这绝对是其中之一。我认为一般的答案是_save并检测到“重新保存”._感谢您的帮助。 – 2012-03-04 06:00:38

相关问题