私が見た動作をシミュレートするために、このテストを書きました(まったく同じエラーが発生します):
@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);
}
これをマップしようとすると、次のようになります。
com.google.code.morphia.utils.ReflectionUtils.getParameterizedClass(ReflectionUtils.java:306) の java.lang.NullPointerException com.google.code.morphia.utils.ReflectionUtils.getParameterizedClass(ReflectionUtils.java:302) の com. google.code.morphia.utils.ReflectionUtils.getParameterizedClass(ReflectionUtils.java:324) at com.google.code.morphia.utils.ReflectionUtils.getParameterizedClass(ReflectionUtils.java:302) at 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.(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)
この作業を行うにはどうすればよいですか?