mongodb - Spring data 和 mongoDB - 继承和@DBRef

标签 mongodb spring-data dbref

我有这两份文件,用户:

@Document(collection = "User")
public class User {
    // fields
}

及联系方式:

@Document(collection = "Contact")
public class Contact extends User{
    // fields
}

然后我有一个引用用户或联系人的文档:

@Document(collection = "DocumentFile")
public class DocumentFile {

    @DBRef
    private User user;
}

因此,我可以在 DocumentFile#user 中添加用户或联系人,但是如果我将联系人设置为 DocumentFile#user,那么我会丢失引用,因为在 MongoDB 中 DocumentFile#user 存储为“_class”:“...Contact” 。 有解决办法吗?

最佳答案

这就是您的类应该如何使 DBRef 与继承一起工作。

用户

@Document(collection = "User")
public class User {

    @Id
    private String id;
    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

联系方式

请注意,您不需要此类上的文档注释。

public class Contact extends User {

    private String address;

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
}

文档文件

@Document(collection = "DocumentFile")
public class DocumentFile {

    @Id
    private String id;

    public void setId(String id) {
        this.id = id;
    }

    @DBRef
    private User user;

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

}

您只需要 IDocumentFileRepositoryIUserRepository 来进行 CRUD 操作。

其余代码以及测试用例已上传到 github。

https://github.com/saagar2000/Spring

关于mongodb - Spring data 和 mongoDB - 继承和@DBRef,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41145881/

相关文章:

带有 Hive 连接的 Spring-boot-application 不会启动嵌入式 Tomcat

Spring 数据 mongodb @DBRef 列表

reference - 如何使用 DBRef 查询 mongodb

node.js - 比较日期以检索数据

mongodb - Grails Mongodb插件无法保存

Python/Flask/MongoDB - 错误消息 : BadRequestKeyError: 400 - Get list

java - REST API : org. springframework.beans.factory.UnsatisfiedDependencyException:

java - 防止 couchbase 连接错误时 Spring Boot 启动失败

java - 检索存储在 couchbase 文档中的 json 对象数组 | Spring

MongoDB 并将 DBRef 与空间数据一起使用