mongodb에서 morphia POJO 매퍼를 사용하여 필터를 구현하는 동안 몇 가지 문제가 있습니다. 내가 @Entity
클래스의 필드에 액세스하려고 할 때 내 수업에서 mongodb의 morphia를 통해 클래스의 객체 목록에 대한 필드 액세스
SampleClass
용), (우리의 경우는
Person
는 것), I 필드 액세스 INT, 문자열 같은 일반적인 필드 점 표기법을 사용하여, 잘 작동 찾기 ,지도 또는 직접 임베디드 개체.
문제는 Person
클래스에서 참조되는 "List of Objects"의 경우에 어떻게 작동하는지 이해할 수 없습니다.
@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;
}
예를 들어, 나는 Address
개체의 streetName
에 필터를 적용 할 (이 Person
클래스는 Address
개체의 목록을 보유하고 필드 addresses
을 가지고, 그래서 사람이 많은 주소를 가질 수 있습니다, 여기에 가정)하는 목록의 개체에 액세스하는 동안 내가 뭔가 잘못하고있는 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());
}
}
암에?
답장을 보내 주셔서 감사합니다. 해결책을 찾았습니다. 나는 그것을 여기 게시 할 것이다 –
나는이 문제에 의심이있다. 이 필드를 ** @ Transient ** ** @ Reference **리스트로 만들면
addresses = new ArrayList ; -> 그런 다음 동일한 솔루션을 적용 할 수 있습니까?일시적인 (db로 저장된 nt)이기 때문에 속성 주소를 찾을 수 없다는 문제점이 있습니다. 그러면 우리는 어떻게 이런 분야를 가지고 놀 수 있을까요? 그것은 저장되었습니다,하지만이 필드를 사용하여 쿼리를 해결하고 싶습니다. 이것에 관한 어떤 생각? 감사! –임시로 저장하는 모든 것은 임시로 필요한 정보 만 고려해야합니다 (대부분 큰 값이 아닙니다). 그래서 기본적으로 일시적인 필드를 사용하여 수행하는 작업은 다른 비 일시적인 필드에서 런타임으로 일부 계산 된 값을 제공하는 것입니다. 쿼리 할 때 이러한 정보가 필요하면 mongo에 저장하는 것이 좋습니다. 왜 그걸 일시적으로 유지하고 싶지 않습니까? 그 뒤에있는 비즈니스 논리는 무엇입니까? 런타임에 사람/주소 연결이 필요하고 지속되지 않는 이유는 무엇입니까? – philnate