Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java MongoDB中的引用_Java_Mongodb_Spring Data_Nosql - Fatal编程技术网

Java MongoDB中的引用

Java MongoDB中的引用,java,mongodb,spring-data,nosql,Java,Mongodb,Spring Data,Nosql,抱歉,我对MongoDB和Spring数据非常陌生,我对这两个类有一个问题: @Document(collection = "person") public class Person { /** * */ private static final long serialVersionUID = 6268875544266598239L; @Id private String Id; private String name;

抱歉,我对MongoDB和Spring数据非常陌生,我对这两个类有一个问题:

@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>();

在这种情况下,我在引用方面会有问题吗?我的意思是,我是否需要将
@DBref
@Reference
或任何其他注释作为
@ManyToOne
注释放入
JPA
?我看到了很多例子,但我不能得到的一点,它没有任何注释工作吗

不带注释,它将
邮件
对象内联保存在
个人
文档中。反之,它将使用注释将
邮件
保存在
个人
文档中

例如:

  • person
    文档中没有
    @DBRef
    {“id”:“foo”,“name”:“bar”,“mails”:[{“id”:“abc”,“mail”:“hello”},{“id”:“def”,“mail”:“world”}}
  • person
    document with
    @DBRef
    {“id”:“foo”,“name”:“bar”,“mail”:[{“$ref”:“mail”,“$id”:“abc”},{“$ref”:“mail”,“$id”:“def”}}
这意味着,如果您需要
个人
邮件
集合之间的一致性,您应该使用
@DBRef
,在这种情况下,它的行为就像JPA上下文中的
@OneToMany
注释

但是如果在99%的情况下需要两个文档之间的关系,则需要关系dbms而不是mongo

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

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

    Person person;