2016-07-20 3 views
0

두 가지 모델 클래스가 있습니다. 하나는 Company.java이고 다른 하나는 HumanResource.java입니다.Morphia를 사용하여 POJO 매핑 및 MongoDB에서 참조 사용

Company.java

@Entity("companies") 
public class Company { 
@Id 
private ObjectId id = new ObjectId(); 
private String companyName; 
private String emailAddress; 
private String pictureUrl; 
@Reference 
private List<HumanResource> humanResources; 
... 

HumanResource.java

@Entity("humanresources") 
public class HumanResource { 
@Id 
private ObjectId id = new ObjectId(); 
private String firstName; 
private String lastName; 
private String emailAddress; 
@Reference 
private Company company; 
... 

내가 데이터 저장소에 대한 기업의 목록, 인적 자원의 관련 목록 문서를 자동으로 삽입되어야한다 저장할 때 무엇을 달성하고자하는 것은 .

은 또한, 나는 모든 모델 클래스에

@Id 
private ObjectId id = new ObjectId(); 

을 선언했다. 그것은 좋은 방법입니까 아니면 그것을 바꿔야합니까?

+0

그러나 회사를 만들 때 HumanResource의 회사를 채우거나 그 반대의 경우 어떻게됩니까? – Newton

+0

회사 컬렉션은 HumanResources 목록의 참조로 채워집니다. 그러나 HumanResources 컬렉션은 db에 채워지지 않습니다. – fivetech

답변

1

Morphia는 해당 참조에 save()을 부르지 않습니다. 유지하려는 인스턴스에서 save()으로 전화해야합니다. 인스턴스 목록을 전달할 수 있으므로 반드시 반복 할 필요는 없지만 각 인스턴스를 명시 적으로 전달해야합니다.

+0

알겠습니다. 고마워. 나는 또 다른 질문이있다. 나는 private ObjectId id = new ObjectId()를 선언했다. 모든 모델 클래스에서. 그것은 좋은 방법입니까 아니면 그것을 바꿔야합니까? – fivetech

+0

Morphia/드라이버가 ObjectId 인 경우 ID 필드를 채 웁니다. ID를 수동으로 생성해도 아무런 해가 없습니다. 대부분의 경우 불필요합니다. – evanchooly

+0

참조없이 하나의 개체를 저장할 때 채 웁니다. 그러나이 예제에서 수동으로 만들지 않으면 @id 필드는 null이 될 수없고 매핑 예외가 throw됩니다. – fivetech