我在 MongoDB 中有一个集合,其中包含这样的项目:
{
"_id" : ObjectId("53e4d31d1f6b66e5163962e3c"),
"name" : "bob",
"nestedObject" : {
"_id" : ObjectId("53f5a623cb5e4c1ed4f6ce67")
//more fields...
}
}
此项目的 Java 表示如下:
public class SomeObject {
@Id
private String id;
private String name;
private NestedObject nestedObject;
//getters and setters
}
Repository 接口(interface)定义如下:
public interface SomeObjectRepository extends MongoRepository<SomeObject, String> {
public List<SomeObject> findByName(String name);
public List<SomeObject> findByNestedObjectId(String id);
//some other find functions
}
现在,findByName(String name)
正在正常工作,但 findByNestedObjectId(String id)
什么也不返回。
问题是:是否可以使用存储库接口(interface)通过其嵌套对象的属性找到集合项?如果没有,解决此问题的推荐方法是什么?是否可以不重新实现整个存储库?
最佳答案
我已经想出了如何解决这个问题。
将参数类型改为org.bson.types.ObjectId;来自字符串
public List<SomeObject> findByNestedObjectId(ObjectId id);
当你调用它时使用
repositoryName.findByNestedObjectId(new ObjectId(theIdString));
关于java - 如何使用存储库接口(interface)在 Spring Data 中通过其嵌套对象的 objectId 查找集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25441514/