我有一个Snozberry对象,如下所示:
{
"id":"3cbdb746-561d-4e21-82e0-b7cfcad3a094",
"thingId":"7cbfb7a6-763d-6ef1-271b-b2a0cfc2fa43",
"stuffId":81,
"bits":"WooHoo"
}Java类(为了简洁起见省略了构造函数、getter和setter):
@Document(collection="Snozberry")
public class Snozberry {
@Id
private UUID id;
private UUID thingId;
private Long stuffId;
private String bits;
}存储库如下所示:
public interface SnozberryRepository extends MongoRepository<Snozberry,UUID>{
Snozberry findByThingId(UUID Id);
Snozberry findById(UUID id);
}在MongoDb集合中,_id & thingId字段被定义为UUID。我想返回与我传入的id值匹配的文档。
我可以使用findAll()返回所有对象,也可以使用
Snozberry findByThingId(UUID id)方法定义在我的存储库中,因此我知道它正在与DB ok对话,并且它可以找到(non ) UUID字段ok。
我试过默认的
findOne(UUID.fromString("3cbdb746-561d-4e21-82e0-b7cfcad3a094")我还调用了在存储库中定义的方法
Snozberry findById(UUID id)但这两个都返回null。我错过了什么(感觉应该是显而易见的)。
谢谢M
发布于 2017-03-07 16:30:57
很可能您的问题在于由_id生成的MongoDB字段。由于您的类中已经有一个id字段,MongoDB将尝试做几件事来使用它,如果没有,它将分配它自己的_id,请看下面的页面
http://docs.spring.io/spring-data/mongodb/docs/1.2.0.RELEASE/reference/html/mapping-chapter.html
转到7.1.1节:如何在映射层中处理“_id”字段
看看是否有用。
https://stackoverflow.com/questions/42653171
复制相似问题