我在编写代码时遇到了困难,无法直接获取用户和声明详细信息.这是我的MongoDB struct ,
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);
如果我try 点击这个方法,我会得到一个错误,
未发现能够从org.bson.types.ObjectId
型转换为java.lang.String
型的转换器
所以我改变了我的用户实体类,如下所示,
而不是private List<Claim> claim
;
改为Private List<ObjectId> claim
;
现在,如果我执行一个方法(findByName),我会得到一个用户对象,该对象具有两个声明对象Id ("52ffc4a5d85242602e000001","52ffc4a5d85242602e000000")
,然后迭代声明列表,并获得与声明对象Id对应的声明细节.
而不是这样做,当我执行findByName
方法时,我想获得一个用户并声明详细信息.如何实现此功能?