春季蒙戈DB@DBREF
2022-09-02 22:05:36
我在编写允许以直接方式获取用户和声明详细信息的代码时遇到问题。这是我的MongoDB结构,
db.user.find();
user:
{
"name" : "KSK",
"claim" : [objectId("52ffc4a5d85242602e000000"),objectId("52ffc4a5d85242602e000001")]
}
claim:
[
{
"_id" : "52ffc4a5d85242602e000001",
"claimName" :"XXXX"
},
{
"_id" : "52ffc4a5d85242602e000000",
"claimName" :"YYY"
}
]
我的实体类是:
@Document(collection="user")
public class User{
@Id
private String id;
private String name;
@DBRef
private List<Claim> claim;
// setter and getter
}
索赔类:
@Document(collection="Claim")
public class Claim{
@Id
private String id;
private String claimName;
}
我有一种方法可以按如下所示的名称获取用户,
public User findByName(String name);
如果我尝试点击此方法会得到一个错误,
没有找到能够从类型转换到类型的转换器org.bson.types.ObjectId
java.lang.String
所以我更改了我的用户实体类,如下所示,
而不是private List<Claim> claim
;
更改为Private List<ObjectId> claim
;
现在,如果我执行一个方法(findByName),我会得到一个同时具有声明对象ID的用户对象,然后迭代声明列表并获取与声明对象Id对应的声明详细信息。("52ffc4a5d85242602e000001","52ffc4a5d85242602e000000")
当我执行方法时,我希望获取用户和声明详细信息,而不是这样做。如何实现此功能?findByName