Morphia mapping Generics

时间:2013-11-14 13:11:39

标签: java mongodb generics morphia

为了模拟我看到的行为,我写了这个测试(给出了同样的确切错误):

@Test
public void testListGenerics() {

    @Entity
    class BaseOne<T> {
        @Id
        ObjectId _id;
        T value;
        void setValue(T value) {
            this.value = value;
        }
    }

    class ListBase<ITEM> extends BaseOne<List<ITEM>> { }

    class ConcreteOne extends ListBase<String> {}

    ConcreteOne concreteOne = new ConcreteOne();
    List<String> strings = Arrays.asList("Hello, ", "world");
    concreteOne.setValue(strings);
    morphia.toDBObject(concreteOne);

}

尝试映射时,我得到:

  

java.lang.NullPointerException at   com.google.code.morphia.utils.ReflectionUtils.getParameterizedClass(ReflectionUtils.java:306)     在   com.google.code.morphia.utils.ReflectionUtils.getParameterizedClass(ReflectionUtils.java:302)     在   com.google.code.morphia.utils.ReflectionUtils.getParameterizedClass(ReflectionUtils.java:324)     在   com.google.code.morphia.utils.ReflectionUtils.getParameterizedClass(ReflectionUtils.java:302)     在   com.google.code.morphia.utils.ReflectionUtils.getParameterizedType(ReflectionUtils.java:281)     在   com.google.code.morphia.mapping.MappedField.discoverMultivalued(MappedField.java:136)     在   com.google.code.morphia.mapping.MappedField.discover(MappedField.java:96)     在   com.google.code.morphia.mapping.MappedField。(MappedField.java:76)     在   com.google.code.morphia.mapping.MappedClass.discover(MappedClass.java:197)     在   com.google.code.morphia.mapping.MappedClass。(MappedClass.java:119)     在   com.google.code.morphia.mapping.Mapper.getMappedClass(Mapper.java:225)     在   com.google.code.morphia.DatastoreImpl.getWriteConcern(DatastoreImpl.java:1346)     在com.google.code.morphia.DatastoreImpl.save(DatastoreImpl.java:934)

我可以做些什么来完成这项工作?

1 个答案:

答案 0 :(得分:0)

你应该在github上提出一个问题,我会深入了解一下。