是否可以将@DBRef
添加到引用自己的列表中。我想一个例子可以解释我的问题:
@Document(collection = "user")
public class User {
@Indexed(unique = true, direction = IndexDirection.DESCENDING, dropDups = true)
private final String uname;
...
@DBRef
private List<User> contacts; // <-- The Problem
... (Getter / Setters, etc.)
}
如果我运行代码,控制台会给我错误:
Caused by: com.mongodb.MongoException$DuplicateKey: { "serverUsed" ...
是否可以修复我的代码,或者我是否必须创建一个新文档作为参考?
修改
我现在有一个奇怪的问题。为了测试,我在用户类中评论了contacts
变量。
@Document(collection = "user")
public class User {
@Id
private final String uid;
@Indexed(unique = true, direction = IndexDirection.DESCENDING, dropDups = true)
private final String uname;
...
//private List<String> contacts;
@DBRef private Role role;
...
}
但错误显示:
duplicate key error index: test.user.$contacts.uname dup key: { : null }" , "code" : 11000}
如果联系人列表被注释,$contacts.uname
来自哪里?我已经重新启动了mongodb服务器并删除了我的收藏。