我有这两个文档,用户:
@Document(collection = "User")
public class User {
// fields
}
和联系人:
@Document(collection = "Contact")
public class Contact extends User{
// fields
}
然后我有一个文档,该文档是指用户ODER联系人:
@Document(collection = "DocumentFile")
public class DocumentFile {
@DBRef
private User user;
}
因此,我能够在DocumentFile#用户中添加用户ODER联系人,但是如果我将联系人设置为DocumentFile#用户,则丢失了参考,因为在MongoDB documentfile#中,将用户存储为" _class":" ..." ...联系人"。有解决方案吗?
这就是您的类应该使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;
}
}
您只需要IDocumentFileRepository
和IUserRepository
即可进行CRUD操作。
其余代码以及测试用例已上传到GitHub。
https://github.com/saagar2000/spring