我在使用 morphia POJO 映射器在 mongodb 中实现过滤器时遇到了一些问题。
在我的类(例如SampleClass
)中,当我尝试访问@Entity
类的字段(在我们的例子中是Person
)时,我发现字段访问工作正常,对 int、string、maps 或直接嵌入对象等一般字段使用点表示法。
问题是我无法理解它在Person
类中引用的“对象列表”的情况下是如何工作的。(假设在这里,一个人可以有很多地址,所以这个Person
类有一个addresses
包含对象列表的字段Address
)
@Entity
Class Person
{
String name;
int age;
String type;
private Map<String, String> personalInfo= new HashMap<String, String>();
@Reference
List<Address> addresses = new ArrayList<Address>;
}
@Entity
Class Address
{
String streetName;
int doorNo;
}
例如,我想对列表streetName
中的Address
对象应用过滤器addresses
public class SampleClass
{
private Datastore ds;
Query<Node> query;
CriteriaContainer container;
// connections params etc....
public List<Person> sampleMethod()
{
query = ds.find( Person.class ).field( "type" ).equal( "GOOD");
container.add( query.criteria( "name" ).containsIgnoreCase("jo" ));
// general String field in the Person Class ---- OKAY, Work's Fine
container.add( query.criteria( "personalInfo.telephone" ).containsIgnoreCase( "458" ) );
// Map field in the Person Class, accessing telephone key value in the map --- OKAY, Work's Fine
container.add( query.criteria( "addresses.streetname").containsIgnoreCase( "mainstreet" ) );
// List of address object in the Person Class, name of the field is 'addresses'
// ----NOT OKAY ????????? -- Here is the problem it returns nothing, even though some value exists
return readTopography( query.asList() );
}
}
访问列表中的对象时我做错了什么吗?