我的项目中定义了以下实体:
国家
@Entity
@Data
public class Country {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
Long id;
@Column(nullable = false)
String name;
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
List<City> cities = new ArrayList<City>();
}
城市
@Entity
@Data
public class City {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
Long id;
@Column(nullable = false)
String name;
@ManyToOne
Country country;
}
人
@Entity
@Data
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
Long id;
@Column
String name;
@Embedded
Address address = new Address();
}
地址
@Data
public class Address {
@Column
String line;
@ManyToOne
Country country;
@ManyToOne
City city;
}
我还为Person
,Country
和City
定义了存储库。
当我向/ persons / 1发出GET请求时,我得到以下结果:
{
"name":null,
"address":{
"line":"Address1"
},
"_links":{
"self":{
"href":"http://localhost:8080/persons/1"
},
"city":{
"href":"http://localhost:8080/persons/1/city"
},
"country":{
"href":"http://localhost:8080/persons/1/country"
}
}
}
我怀疑由于地址是嵌入式对象,因此生成的国家和城市链接是错误的。尽管存在city
和country
值,但他们不会返回任何内容。正确的链接应该是什么?
Spring Data Rest不支持嵌入对象吗?
答案 0 :(得分:2)
可能的解决方案:
ResourceProcessor
以删除这些链接更新:这似乎已经在Spring-DATA-REST v2.1中得到修复。请参阅DATAREST-262。