2016-07-20 15 views
0

私は2つのモデルクラスを持っています。 1つはCompany.java、もう1つはHumanResource.javaです。モルフォを使用した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

モルフィアは、これらの参照にsave()を呼び出しません。永続化するインスタンスでsave()に電話する必要があります。インスタンスのリストを渡すことができますので、必ずループする必要はありませんが、各インスタンスを明示的に渡す必要があります。

+0

私はそれを得た。それはあなたに感謝します。私は別の質問があります。私はprivate ObjectIdを宣言しましたid = new ObjectId();すべてのモデルクラスで。それは良い方法ですか、私はそれを変えるべきですか? – fivetech

+0

Morphia /ドライバは、ObjectIdである限り、IDフィールドに値を設定します。 IDを手動で作成することには問題ありません。ほとんどの場合、不必要なだけです。 – evanchooly

+0

1つのオブジェクトを参照せずに保存すると、そのオブジェクトが読み込まれます。ただし、この例では、手動で作成しないと@idフィールドをnullにすることはできず、マッピング例外がスローされます – fivetech

関連する問題