2014-10-29 44 views
1

在下列情况下,当我保存CharFoo对象,然后做一个找到,通用场abstractFooField转换回一个字,但bar.field从子文档转换为字符串而不是字符。
我做错了什么?或者这不是由Spring Data MongoDB支持的吗?SpringData的MongoDB - 通用转换子文档领域

PS:我使用的是弹簧数据的MongoDB 1.6.0.RC1和弹簧数据公共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" 
    } 
} 
+0

你有一个测试用例方便显示你想要什么,以实现和什么你想达到什么目的?你得到一些例外或失败的测试断言? – 2014-10-30 14:27:29

+0

@OliverGierke对不起,拖延时间太长。我添加了一个失败的单元测试。希望它有助于更​​好地描述我的问题... – MirceaG 2015-02-11 12:26:03

+0

正如我最近再次遇到这个“问题”,我添加了以下错误[链接](https://jira.spring.io/browse/DATAMONGO-1312) – MirceaG 2015-11-03 14:45:57

回答