1
2
通常,合并会为您工作,因为您得到了分离的副本-一个从json获得的副本,一个持久的副本(来自存储库)。merge确实做到了这一点-用分离的属性的值更新持久化属性,如果没有则创建它(我不确定该部分是否值得)。仍然让它自动化,你就失去了你自己写它的灵活性。 对于jpa,merge方法是entitymanager的一部分。所以你需要注入它并像em.merge(detachedEntity)那样调用它; 除此之外,还有一些图书馆可以这样做,但我没有用过。最好的解决方案是编写一个方法来手动更新字段;) |
2
0
看一看 dozer -一个bean映射库。可以使用自定义字段映射器配置dozer,使其在字段为空时不复制该字段。 可以从数据库检索对象,将请求对象中的字段值复制到从数据库检索的对象(使用不映射空值的自定义字段映射器),然后保存对象。
裁判: https://stackoverflow.com/a/36716023/1377058 如果不想将dozer添加为依赖项,也可以使用beanutils只复制那些不为空的属性。看一看 this 询问如何做的细节。 |
3
0
我发现我的问题的确切要求无法满足。 Dozer Bean Mapper 似乎是一个选项,但更多的是关于映射不同类的be an对象,在这里我们可以对应要映射的字段,这不是我的情况。 解决方案是改变在执行更新时发送所有必需信息的方法。 AS Simon 评论中指出:
|