作者:书友71794607 | 来源:互联网 | 2023-02-02 16:10
这是我的MongoDb结构,
db.user.find();
用户:
{
"name" : "KSK",
"claim" : [objectId("52ffc4a5d85242602e000000"),objectId("52ffc4a5d85242602e000001")]
}
要求:
[
{
"_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;
// 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的转换器
所以我改变了我的User实体类,如下所示,
而不是 private List claim
;
改为Private List claim
;
现在,如果我执行一个方法(findByName),我得到一个同时具有声明对象ID("52ffc4a5d85242602e000001","52ffc4a5d85242602e000000")的用户对象,然后迭代声明列表并获取与声明对象Id相对应的声明详细信息.
而不是这样做,当我执行findByName方法时,我想获得一个用户并声明详细信息.我该如何实现此功能