Spring Data MongoDb findById 不返回结果

问题描述 投票:0回答:1

我有一个 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() 返回所有对象,并且可以使用

返回与 thingId 匹配的对象
  Snozberry findByThingId(UUID id)

我的存储库中定义的方法,所以我知道它正在与数据库通信,并且它可以找到(非 Id)UUID 字段。

我已经尝试过默认值

findOne(UUID.fromString("3cbdb746-561d-4e21-82e0-b7cfcad3a094")

我也调用了存储库中定义的这个方法

Snozberry findById(UUID id)

但是这两个都返回 null。我错过了什么(感觉这应该是显而易见的)。

谢谢 中号

java spring-data-mongodb
1个回答
0
投票

您的问题很可能在于 MongoDB 生成的 _id 字段。由于你的类中已经有一个 id 字段,MongoDB 将尝试做一些事情来利用它,如果没有,它将分配它自己的 _id,请看下面的页面

http://docs.spring.io/spring-data/mongodb/docs/1.2.0.RELEASE/reference/html/mapping-chapter.html

转到章节 7.1.1 映射层中如何处理 '_id' 字段

看看是否有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.