春天蒙戈DB @DBREF

KSK:

这是我的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> 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方法我想获得用户和要求的详细信息。我怎样才能实现这个功能

马特:

如果您引用您Claim在S User与@DBRef类,你的JSON不应该只包含ID,但参考集合在哪里可以找到ID为好,就像这样:

{
  "name" : "KSK", 
  "claim"  : [ 
     { "$ref":"claim", // the target collection
       "$id : "ObjectId("52ffc4a5d85242602e000000")
     }
  ] 
}

这是怎么Spring的数据映射您的Java对象的MongoDB。如果你开始一个空白数据库,并让Spring创建和保存的关系,你应该使用没有问题

 @DBRef List<Claim> claims;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章