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() );
}
}
リスト内のオブジェクトにアクセスしているときに何か間違ったことをしていますか?