【发布时间】:2012-02-06 07:38:09
【问题描述】:
我想将不同的数据存储到 MongoDb 中的一个集合中,并让 Spring 数据 bean 具有适当的字段..
对不起,我跳过了细节。
父 bean:
class A
int a
孩子们:
class B extends A
double b
class C extends A
String c
所以,mongo中有以下文件
{a : 1, b : 2.3, c : "Test"}
当我获取数据时,没关系。但是,当我从 CrudRepository 为 B 调用 save 方法时,它会重写所有数据并且我会丢失 C。
我只知道一种使用增量更新创建自定义保存方法的好选择,例如
update.set("b", newvalue)...
但有反射。
您还有其他想法吗?
提前致谢。
【问题讨论】:
-
您介意与
MongoTemplate和您的存储库的交互更详细吗?您是否将数据读回到B的对象中?这实际上应该返回一个C类型的对象,因为我们应该检测存储的类型信息。除此之外,集合映射信息将很有帮助。确保所有类都映射到同一个集合。 -
嗨奥利弗,谢谢你的回答。是的,我已经覆盖了“MongoTemplate”的“保存”方法来使用更新查询。现在当我保存“B”时,它只更新“B”字段。但我试图找到更棒的解决方案......
-
如果您添加相关代码 sn-ps 我们可能会更深入地研究这个问题:)
-
嗨奥利弗,很抱歉延迟回复。有我们的解决方案:gist.github.com/1631780
-
@OliverGierke 感谢所有辛勤工作! 1.0.1.RELEASE 为我解决了很多问题
标签: java mongodb spring-data mongodb-java