Spring 数据 REST 为嵌入式集合生成 link 不正确
Spring Data REST generating link for embedded collection incorrectly
我有一个案例,SPR 正在为一个嵌入的集合生成 links,这是我的实体的一个属性,而它不应该。我有以下 class 结构。我也在使用 Lombok 生成各种 getter/setters,但我认为这不重要。
@Entity
@Data
public class Person
{
@Id
@GeneratedValue
private Long id;
private String name;
@OneToMany(mappedBy="person")
private List<Address> addresses;
}
@Entity
@Data
public class Address
{
@Id
@GeneratedValue
private Long id;
private String street;
private String city;
private String state;
private String zip;
@ManyToOne
private Person person;
}
一切都编译,当我从 SDR 获得其中一个人的 JSON 输出时,我在 links 部分得到以下内容。
"_links" : {
"self" : {
"href" : "http://localhost:8080/people/1"
},
"person" : {
"href" : "http://localhost:8080/people/1/person"
}
}
如我所料,尝试访问此 /people/1/person
link 失败并返回 404。我已经确认它来自 Person
对象上的 addresses
集合。但我无法弄清楚为什么它在那里以及如何删除它。
实体的 Address
class 没有 Repository
,因为它们完全是 Person
对象的子实体。也许我在对象树中建模错误?
这不再是问题。我想我通过更新到 Spring HATEOAS 0.17.0 解决了这个问题,但我不确定。我同时处理了很多问题,把这个问题搁置了一会儿,现在一切正常。
我有一个案例,SPR 正在为一个嵌入的集合生成 links,这是我的实体的一个属性,而它不应该。我有以下 class 结构。我也在使用 Lombok 生成各种 getter/setters,但我认为这不重要。
@Entity
@Data
public class Person
{
@Id
@GeneratedValue
private Long id;
private String name;
@OneToMany(mappedBy="person")
private List<Address> addresses;
}
@Entity
@Data
public class Address
{
@Id
@GeneratedValue
private Long id;
private String street;
private String city;
private String state;
private String zip;
@ManyToOne
private Person person;
}
一切都编译,当我从 SDR 获得其中一个人的 JSON 输出时,我在 links 部分得到以下内容。
"_links" : {
"self" : {
"href" : "http://localhost:8080/people/1"
},
"person" : {
"href" : "http://localhost:8080/people/1/person"
}
}
如我所料,尝试访问此 /people/1/person
link 失败并返回 404。我已经确认它来自 Person
对象上的 addresses
集合。但我无法弄清楚为什么它在那里以及如何删除它。
实体的 Address
class 没有 Repository
,因为它们完全是 Person
对象的子实体。也许我在对象树中建模错误?
这不再是问题。我想我通过更新到 Spring HATEOAS 0.17.0 解决了这个问题,但我不确定。我同时处理了很多问题,把这个问题搁置了一会儿,现在一切正常。