Java Spring数据rest方法无法在DbRef Id字段上搜索
我在应用程序中使用mongodb和spring boot。In Area collection city是DBRef,但spring data rest方法无法使用city的Id进行搜索。它返回空JSON,尽管对于该城市,我的数据库中有Area。我的Area collection和repository如下所示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
@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]的十六进制表示形式无效