네이티브 Java 드라이버 (타사 라이브러리/ORM 없음)와 함께 Mongo를 사용합니다. 나는 두 개의 "ReleaseDetailsByTerritory"항목을 갖는 "릴리스"항목을 검색하고, 그 두 ReleaseDetailsByTerritory 클래스 인스턴스의 목록을 포함하는 릴리스 클래스 인스턴스에 자동 통해 인스턴스 갖고 싶어Mongo ReflectionDBObject, 모든 임베디드 배열 요소를 클래스에 매핑합니다.
public class Release extends ReflectionDBObject {
//other fields omitted
private List<ReleaseDetailsByTerritory> releaseDetailsByTerritory = new ArrayList<ReleaseDetailsByTerritory>();
}
public class ReleaseDetailsByTerritory extends ReflectionDBObject { //...}
, 내가 가진 :이 있습니다 이렇게하려면 :
releaseColl.setObjectClass(Release.class);
releaseColl.setInternalClass("ReleaseDetailsByTerritory.0", ReleaseDetailsByTerritory.class);
releaseColl.setInternalClass("ReleaseDetailsByTerritory.1", ReleaseDetailsByTerritory.class);
Release r = (Release) releaseColl.findOne();
즉 임베디드 어레이의 각 잠재적 요소를 해당 클래스에 구체적으로 매핑해야합니다.
Mongo 드라이버에게 임베디드 배열의 모든 요소를 특정 클래스에 매핑되도록하고 싶습니다. 예 :
collection.setInternalClass("ReleaseDetailsByTerritory.*", ReleaseDetailsByTerritory.class);
?
감사합니다. 그리고 "Spring MondoDb 모듈 또는 Morphia 사용"이라고 말하지 마십시오. 이것이 Mongo 네이티브 Java 드라이버로 달성 가능한지 알고 싶습니다.
소스 코드를보고 이것이 가능하다고 생각하지 않습니다. 나는 "ReleaseDetailsByTerritory"를 전달하려고 시도했다고 가정합니까? 그래서 .0 또는. *는 없습니다. –
네, "ReleaseDetailsByTerritory"를 전달하려고 시도했지만 작동하지 않습니다. 나는 당신이 옳다고 생각합니다. 나는 단지 근원을 보았습니다. 그리고 그것이 전부입니다. 당신이 대답에 당신의 코멘트를하고 싶다면 나는 그것을 "선택된 대답"으로 만들 것입니다. 그렇지 않다면 나는이 (2 일 후)에 직접 대답 할 것이다. –