我有一个Snozberry对象,如下所示:
{
"id":"3cbdb746-561d-4e21-82e0-b7cfcad3a094",
"thingId":"7cbfb7a6-763d-6ef1-271b-b2a0cfc2fa43",
"stuffId":81,
"bits":"WooHoo"
}
Java类(为简洁省略了构造函数,getter和ampter):
@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&amp; thingId字段被定义为UUID。我想返回与我传入的id值匹配的文档。
我可以使用findAll()返回所有对象,并且可以使用
返回与thingId匹配的对象 Snozberry findByThingId(UUID id)
在我的存储库中定义的方法,所以我知道它正在与数据库确定,并且它可以找到(非Id)UUID字段。
我尝试过默认
findOne(UUID.fromString("3cbdb746-561d-4e21-82e0-b7cfcad3a094")
我还调用了存储库中定义的这个方法
Snozberry findById(UUID id)
但是这两个都返回null。我错过了什么(感觉它应该是显而易见的)。
由于 中号
答案 0 :(得分: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'字段
看看它是否有帮助。