У меня есть некоторые проблемы при реализации фильтров в mongodb с использованием морфийного POJO-сопоставителя.
В моего класса (например, SampleClass
), когда я пытаюсь получить доступ к полям класса @Entity
(в нашем случае это Person
), я нахожу поле access работает нормально, используя точечную нотацию для общих полей, таких как int, string, maps или прямые встроенные объекты.
Проблема в том, что я не мог понять, как это работает в случае «Списка объектов», на который ссылается класс Person
. (Предположим, что у человека может быть много адресов, поэтому этот класс Person
имеет поле address
, которое содержит список объектов 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
, который находится в списке address
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() );
}
}
. Я делаю что-то не так при доступе к объектам в список?