SpringData MongoDB-转换通用子文档字段

MirceaG

在以下情况下,当我保存CharFoo对象然后执行find时,泛型字段abstractFooField会转换回Character,但是子文档中的bar.field会转换为String而不是Character。
难道我做错了什么?还是Spring Data MongoDB不支持此功能?

PS:我正在使用spring-data-mongodb 1.6.0.RC1和spring-data-commons 1.9.0.RC1

@Document(collection = "foo")
public abstract class AbstractFoo<T> {

    @Id
    private String id;
    private T abstractFooField;
    private AbstractBar<T> bar;

    public AbstractFoo() {}

    public AbstractFoo(T abstractFooField, AbstractBar<T> bar) {
        this.abstractFooField = abstractFooField;
        this.bar = bar;
    }
}


public class CharFoo extends AbstractFoo<Character> {

    public CharFoo() {}

    public CharFoo(Character abstractFooField,
            AbstractBar<Character> bar) {
        super(abstractFooField, bar);
    }
}

@Document
public class AbstractBar<T> {
    public AbstractBar() {}
}

public class Bar<T> extends AbstractBar<T> {

    private T field;

    public Bar(T field) {
        this.field = field;
    }
}

单元测试:

@Test
public void givenGenericEntities_whenFindOne_thenReturnCorrectTypes() {
    // GIVEN
    Bar<Character> charBar = new Bar<>('A');
    CharFoo charFoo = new CharFoo('B', charBar);
    fooRepository.save(charFoo);

    // WHEN
    CharFoo dbCharFoo = charFooRepository.findOne(charFoo.getId());

    // THEN
    assertEquals("Field class should match", Character.class, dbCharFoo.getAbstractFooField().getClass());
    assertEquals("Field class from sub-class should match", Character.class, ((Bar) dbCharFoo.getBar()).getField()
            .getClass());
}

结果:

java.lang.AssertionError: Field class from sub-class should match 
Expected :class java.lang.Character
Actual   :class java.lang.String

MongoDB文件:

{
    "_id" : ObjectId("54db485a06e70e8444a15291"),
    "_class" : "com.test.model.CharFoo",
    "abstractFooField" : "B",
    "bar" : {
        "_class" : "com.test.model.Bar",
        "field" : "A"
    }
}
MirceaG

这是通过spring-data-mongodb 1.8.1中的DATAMONGO-1312解决的

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SpringData MongoDB使用投影

来自分类Dev

SpringData MongoDB聚合匹配

来自分类Dev

Springdata MongoDB会在子文档中自动生成不想要的唯一索引

来自分类Dev

更新后的SpringData MongoDB性能错误/问题

来自分类Dev

用于聚合 $map 的 SpringData mongoDB API

来自分类Dev

SpringData MongoDB和条件查询出现错误,其中同一字段出现两次

来自分类Dev

在文档的子字段中过滤mongodb游标

来自分类Dev

MongoDB:汇总子文档数组中的字段

来自分类Dev

显示Mongodb集合文档的子字段

来自分类Dev

仅基于子文档_id返回子文档,子文档_id是mongodb文档的array字段的项

来自分类Dev

MongoDB:重命名集合中的字段(文档和子文档)

来自分类Dev

MongoDb:如何从文档中获取字段(子文档)?

来自分类Dev

SpringData MongoDB findBy使用DBRef的嵌套属性(非ID)

来自分类Dev

SpringData JPA 左加入子查询

来自分类Dev

使用findOne更新mongoDB文档中的子字段并保存

来自分类常见问题

使用MongoDB Java仅检索数组子文档字段的值

来自分类Dev

如何在MongoDB的子文档中添加额外的字段?

来自分类Dev

Mongodb查询和计数子文档字段的出现

来自分类Dev

在mongodb中排除子文档数组中的字段

来自分类Dev

计算mongodb中的子文档字段和总数

来自分类Dev

用于算术运算的MongoDB聚合-子文档字段

来自分类Dev

MongoDB检索与聚合字段对应的子级别文档值

来自分类Dev

MongoDB检查数组的子文档中是否存在字段

来自分类Dev

mongodb $ lookup数组子文档中的单个字段

来自分类Dev

如何在MongoDB的子文档中添加额外的字段?

来自分类Dev

如何在MongoDB中更新子文档字段值?

来自分类Dev

在mongodb中排除子文档数组中的字段

来自分类Dev

MongoDB删除子文档

来自分类Dev

MongoDB查询-子文档

Related 相关文章

  1. 1

    SpringData MongoDB使用投影

  2. 2

    SpringData MongoDB聚合匹配

  3. 3

    Springdata MongoDB会在子文档中自动生成不想要的唯一索引

  4. 4

    更新后的SpringData MongoDB性能错误/问题

  5. 5

    用于聚合 $map 的 SpringData mongoDB API

  6. 6

    SpringData MongoDB和条件查询出现错误,其中同一字段出现两次

  7. 7

    在文档的子字段中过滤mongodb游标

  8. 8

    MongoDB:汇总子文档数组中的字段

  9. 9

    显示Mongodb集合文档的子字段

  10. 10

    仅基于子文档_id返回子文档,子文档_id是mongodb文档的array字段的项

  11. 11

    MongoDB:重命名集合中的字段(文档和子文档)

  12. 12

    MongoDb:如何从文档中获取字段(子文档)?

  13. 13

    SpringData MongoDB findBy使用DBRef的嵌套属性(非ID)

  14. 14

    SpringData JPA 左加入子查询

  15. 15

    使用findOne更新mongoDB文档中的子字段并保存

  16. 16

    使用MongoDB Java仅检索数组子文档字段的值

  17. 17

    如何在MongoDB的子文档中添加额外的字段?

  18. 18

    Mongodb查询和计数子文档字段的出现

  19. 19

    在mongodb中排除子文档数组中的字段

  20. 20

    计算mongodb中的子文档字段和总数

  21. 21

    用于算术运算的MongoDB聚合-子文档字段

  22. 22

    MongoDB检索与聚合字段对应的子级别文档值

  23. 23

    MongoDB检查数组的子文档中是否存在字段

  24. 24

    mongodb $ lookup数组子文档中的单个字段

  25. 25

    如何在MongoDB的子文档中添加额外的字段?

  26. 26

    如何在MongoDB中更新子文档字段值?

  27. 27

    在mongodb中排除子文档数组中的字段

  28. 28

    MongoDB删除子文档

  29. 29

    MongoDB查询-子文档

热门标签

归档