我在我的项目中使用Spring Data Mongo,如下所示:

  • Spring Data MongoDB 1.2 / Spring Data Commons 1.5

  • Spring 3.2.2 RELEASE

  • MongoDB / QueryDSL 2.9 / Mongo Java Driver 2.10.1

Case 1: @Id来自spring数据公共,@ Document来自Spring数据Mongo .

@Document
class User{
    @Id String id;
}


@Document
class Picture{
    @Id String id;
}

@Document 
class Avatar extends Picture{
    @DBref User user;
}

我没有使用Spring Data Repostory api或QueryDSL,我无法通过用户获取头像数据 .

//decalred in repository
List<Avatar> findByUser(User user);

// or from the QueryDSL executor
List<Avatar> avatars=rep.findAll(QAvatar.avatar.user.eq(user));

所有返回空集合(当然其中有一些数据) .

Case 2 :如果我删除@DBRef,在我第一次插入头像和用户之后,它就可以了,但是当我更新User中的数据时,然后按用户获取头像,返回空列表 .

@Document 
class Avatar extends Picture{
    User user;
}

Case 3 :将User更改为String(userid),它可以正常工作 .

@Document 
class Avatar extends Picture{
    String userId;
}

这里有关于MongoDB的java建模的任何建议吗?谢谢 .