按嵌套对象的spring数据rest查询

按嵌套对象的spring数据rest查询,spring,rest,spring-mvc,jpa,Spring,Rest,Spring Mvc,Jpa,我有一个SpringDataREST应用程序,它使用JPA作为底层实现。我有一个类似于以下的数据模型: @Entity public class Person { @Id private Long id; private String name; @ManyToOne private Address address; } @Entity public class Address { @Id private Integer id; private Stri

我有一个SpringDataREST应用程序,它使用JPA作为底层实现。我有一个类似于以下的数据模型:

@Entity
public class Person {

  @Id
  private Long id;
  private String name;

  @ManyToOne
  private Address address;

}

@Entity
public class Address {

  @Id
  private Integer id;
  private String street;
  private String city;
  private String state;
  private String zip;

  @OneToMany(mappedBy = 'address')
  private List<Person> people;
}
@实体
公共阶层人士{
@身份证
私人长id;
私有字符串名称;
@许多酮
私人地址;
}
@实体
公共课堂演讲{
@身份证
私有整数id;
私家弦街;;
私人城市;
私有字符串状态;
私人字符串拉链;
@OneToMany(mappedBy='address')
私人名单;
}
我忽略了接二连三的人,但他们在那里。然后,我有两个
crudepository
接口,用于定义对这两个实体的访问。在
PersonRepository
上,我定义了一个方法
findbynameanddress
。其目的是搜索具有给定姓名和链接地址的人。问题是我想我应该在
findbynameanddress
查询中传入地址的Id。但由于我是通过REST客户端完成所有这些操作的,所以我从来没有id。当我从
AddressRepository
检索地址实体时,SDR会从JSON响应中删除id字段。根据我所读到的,这个想法是在引用实体时只使用
self
链接


现在,很明显,我可以通过解析
self
链接并在查询中使用它来确定ID是什么,但这似乎违反了整个HAL原则。有人对如何执行类似操作有什么建议吗?

好的,我找到了如何启用它的方法,使用自定义的
RepositoryRestMvcConfiguration
类覆盖
config()
方法,并使用
exposeIdsFor()
方法添加到我的域类中

注意:我使用的是SpringBoot,当我配置自己的配置类时,SpringBoot所做的一些自动配置的部分,包括Jackson设置,都坏了。我发现我必须扩展
org.springframework.boot.autoconfigure.data.rest.SpringBootRepositoryRestMvcConfiguration
,而不是从SpringDataREST扩展
RepositoryRestMvcConfiguration