这是我的MongoDB的结构,春蒙戈DB @DBREF
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> 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(“52ffc4a5d85242602e000001”,“52ffc4a5d85242602e000000”),则重复索赔清单,并获得相应的索赔对象的要求细节ID的用户对象。
而不是这样做,当我执行findByName方法我想获得一个用户和要求的细节。我怎样才能实现这个功能
你用列表的初步做法看起来正常的没有问题。你确定它不是一个骆驼案例,请参阅你的Java类中的''claimname''和JSON中的''claimName''。 –
Matt
@Matt它只是一个错字错误。我现在修改了。 – KSK