2014-10-14 2 views
0

mongo에 저장하려는 대부분의 정보를 공유하는 두 개의 매우 기본적인 클래스가 있다고 가정 해 보겠습니다. 이와 같이 :Morphia : 다른 개체의 하위 집합 인 경우 두 개체가 같은 개체에서 가져올 수 있습니까?

public class Customer{ 

    @id 
    private int customerID; 
    private String Name; 
    private int social; 
    private long balance; 
} 


public class CustomerInfo{ 

    @id 
    private int customerID; 
    private String Name; 
    private int social; 
    private long balance; 
    private Address address; 
    private PhoneNumber phoneNumber; 
} 

두 개의 거의 동일한 컬렉션을 갖고 싶지 않은 경우. CustomerInfo에 대한 단일 모음을 만들고 CustomerInfo의 하위 집합이므로 내부에 포함 된 레코드로 Customer 클래스를 채울 수 있습니까?

내가 신경 쓸 가치가있는 customerInfo을로드 할 수 있다는 것을 알았지 만, 좀 더 우아하고 내 기존 형식을 더 잘 반영하는 뭔가를 원합니다.

+0

왜 사용해 보지 않으시겠습니까? – user2418306

답변

1
@Entity(value="customers", noClassnameStored=false) 
public class Customer { 

    @Id 
    private ObjectId id; 
    private String Name; 
    private int social; 
    private long balance; 
} 


public class CustomerInfo extends Customer { 
    private Address address; 
    private PhoneNumber phoneNumber; 
} 

이렇게 작동해야합니다. 각 문서에 클래스 이름을 저장하기 때문에 사용할 문서를 쉽게 쿼리 할 수 ​​있습니다. Morphia는 속성에 따라 자체적으로 이것을 알아낼 것입니다.

추신 : 그리고 무엇을하고 있는지, 왜 그 이유를 모르면 ID를 ObjectId로 유지하십시오. PPS : 비어있을 수 있으므로 프리 머 티브 대신 객체 데이터 유형을 사용하는 것이 좋습니다.이 경우 저장되지 않고 데이터베이스의 공간을 사용합니다.