доступ к полям для списков объектов в классе через morphia в mongodb

У меня есть некоторые проблемы при реализации фильтров в 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() );
    }
}

. Я делаю что-то не так при доступе к объектам в список?

0
задан Paul Roub 16 August 2017 в 13:41
поделиться