Java Spring数据rest方法无法在DbRef Id字段上搜索

Java Spring数据rest方法无法在DbRef Id字段上搜索,java,mongodb,spring-boot,spring-data-rest,Java,Mongodb,Spring Boot,Spring Data Rest,我在应用程序中使用mongodb和spring boot。In Area collection city是DBRef,但spring data rest方法无法使用city的Id进行搜索。它返回空JSON,尽管对于该城市,我的数据库中有Area。我的Area collection和repository如下所示 @Document(collection = "area") public class Area { private String name; pri

我在应用程序中使用mongodb和spring boot。In Area collection city是DBRef,但spring data rest方法无法使用city的Id进行搜索。它返回空JSON,尽管对于该城市,我的数据库中有Area。我的Area collection和repository如下所示

@Document(collection = "area")
    public class Area  {

      private String name;

      private String areaCode;

      private String postalCode;

      private String latitude;

      private String longitude;

      private String category;

      @DBRef(lazy = false)
      private City city;

public interface AreaRepo extends MongoRepository<Area, String> {

  @RestResource(path = "byCityId")
  List<Area> findByCityId(@Param(value = "cityId") String cityId);

其他集合中的同类关系是工作文件。

您可以添加@Query注释

@Query("{ 'city': {'$ref': 'City', '$id': { '$oid': ?0 } } }")
List<Area> findByCityId(@Param(value = "cityId") String cityId);
或直接使用城市对象查找

City city = new City(cityId);
List<Area> findByCity(City city);

你能试着按城市搜索吗

@Autowired 
private CityRepository cityRepository;

List<Area> findByCity(cityRepository.findByCityId(cityId));

谢谢你的回复,但我得到以下错误。原因:java.lang.IllegalArgumentException:ObjectId[\u param\u 0]的十六进制表示形式无效