2016-03-15 90 views
0

很抱歉,但我很新手的MongoDB和Spring數據和我有一個關於這兩類問題:MongoDB中引用

@Document(collection = "person") 
public class Person { 

    /** 
    * 
    */ 
    private static final long serialVersionUID = 6268875544266598239L; 
    @Id 
    private String Id; 
    private String name; 

    //@DBRef(db = "mail") 
    ArrayList<Mail> mails = new ArrayList<Mail>(); 

,另一種是:

@Document(collection = "mail") 
public class Mail { 

    /** 
    * 
    */ 
    private static final long serialVersionUID = 9149555841222037638L; 
    @Id 
    private String Id; 
    private String mail; 

    Person person; 

威爾在這種情況下,我在引用時遇到問題?我的意思是我需要將@DBref@Reference或任何其他註釋與中的@ManyToOne註釋一起使用嗎?我看到很多例子,但我不明白這一點是否沒有任何註釋工作?

回答

0

如果沒有註釋,它將在person文檔中內聯保存mail對象。 Viceversa的註釋會將mailDBRefs保存在person文件中。

例子:

  • person文檔,而無需@DBRef在:{"id":"foo", "name":"bar", "mails":[{"id":"abc", "mail":"hello"},{"id":"def","mail":"world"}]}
  • person@DBRef文件:{"id":"foo", "name":"bar", "mails":[{"$ref":"mail","$id":"abc"},{"$ref":"mail","$id":"def"}]}

這意味着,如果你需要personmail收藏你應該保持一致在這裏使用@DBRef情況下,它的行爲就像JPA上下文中的@OneToMany批註。

但是如果你需要99%的情況下兩個文檔之間的關係,你需要一個關係dbms而不是mongo。