2016-03-15 88 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。