我刚开始开发一些Java应用程序与弹簧数据的MongoDB和遇到一些问题,我一直没能解决传来:
有一对夫妇文档豆这样的:
@Document(collection="myBeanBar")
public class BarImpl implements Bar {
String id;
Foo foo;
// More fields and methods ...
}
@Docuemnt
public class FooImpl implements Foo {
String id;
String someField;
// some more fields and methods ...
}
而我对此简单地调用找到一个类似的方法库类:
public List<? extends Bar> findByFooField(final String fieldValue) {
Query query = Query.query(Criteria.where("foo.someField").is(fieldValue));
return getMongoOperations().find(query, BarImpl.class);
}
保存酒吧工作得很好,它会在蒙戈保存的“_class”属性都Foo和酒吧。 然而,在一些富找到的属性会抛出这样一个异常:
Exception in thread "main" java.lang.IllegalArgumentException: No property someField found on test.Foo!
at org.springframework.data.mapping.context.AbstractMappingContext.getPersistentPropertyPath(AbstractMappingContext.java:225)
at org.springframework.data.mongodb.core.convert.QueryMapper.getPath(QueryMapper.java:202)
at org.springframework.data.mongodb.core.convert.QueryMapper.getTargetProperty(QueryMapper.java:190)
at org.springframework.data.mongodb.core.convert.QueryMapper.getMappedObject(QueryMapper.java:86)
at org.springframework.data.mongodb.core.MongoTemplate.doFind(MongoTemplate.java:1336)
at org.springframework.data.mongodb.core.MongoTemplate.doFind(MongoTemplate.java:1322)
at org.springframework.data.mongodb.core.MongoTemplate.find(MongoTemplate.java:495)
at org.springframework.data.mongodb.core.MongoTemplate.find(MongoTemplate.java:486)
其中,一些挖后,有一定道理,因为无处查询是被指定的子文档的具体类型和酒吧的实体信息说foo的类型是美孚(不FooImpl),这反过来又不能有属性导致它是一个接口。
我的问题是:是否有办法将其指定或工作解决此问题不宣子文档类型作为具体类型?
我一直在Google上搜寻它了几天,看文档和API和源代码,但我无法找到一个明确的方式来做到这一点。 我真的很感谢你的帮助。
非常感谢你。