按嵌套对象的spring数据rest查询
我有一个SpringDataREST应用程序,它使用JPA作为底层实现。我有一个类似于以下的数据模型:按嵌套对象的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
@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