gpt4 book ai didi

嵌套对象的 Spring 数据休息查询

转载 作者:行者123 更新时间:2023-12-02 03:26:55 25 4
gpt4 key购买 nike

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

@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;
}

我省略了 getter/setter,但它们在那里。然后我有两个定义对两个实体的访问的 CrudRepository 接口(interface)。在 PersonRepository 上,我定义了一个方法 findByNameAndAddress。目的是搜索具有给定名称和链接地址的人。问题是我认为我应该在 findByNameAndAddress 查询中传递地址的 Id。但是由于我是通过 REST 客户端执行所有这些操作的,所以我从来没有 id。当我从 AddressRepository 检索地址实体时,SDR 从 JSON 表示中删除了 Id 字段。根据我读过的内容,想法是在引用实体时仅使用 self 链接。

现在,显然,我可以通过解析 self 链接并在查询中使用它来确定 ID 是什么,但这似乎违反了整个 HAL 原则。有没有人对应该如何做这样的事情有任何建议?

最佳答案

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

注意:我使用的是 Spring Boot,当我配置自己的配置类时,Spring Boot 正在执行的一些自动配置位(包括 Jackson Setup)损坏了。弄清楚我必须从 Spring Data Rest 扩展 org.springframework.boot.autoconfigure.data.rest.SpringBootRepositoryRestMvcConfiguration 而不是 RepositoryRestMvcConfiguration

关于嵌套对象的 Spring 数据休息查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29806361/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com