【发布时间】:2020-12-05 09:18:42
【问题描述】:
我正在使用 Spring Boot 构建一个 REST API 来检索船只信息。我正在使用 Spring Data Rest 和 Spring Data JPA。当我从 API 获取数据时,我不知道为什么关系数据与其他信息不匹配。
我是否必须在 Spring 中配置一些东西才能与我的数据建立关系?
这是我的文件。
船实体:
@Entity
@Table(name="boat")
@Data
public class Boat {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@Column(name = "name")
private String name;
@Column(name = "description")
private String description;
@ManyToOne(cascade = CascadeType.PERSIST)
@JoinColumn(name = "type_id", nullable = false)
@JsonBackReference
private BoatType type;
}
船型实体:
@Entity
@Table(name = "boat_type")
@Data
public class BoatType {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@Column(name = "name")
private String name;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "type")
@JsonManagedReference
private Set<Boat> boats;
}
船库:
@CrossOrigin("http://localhost:4200")
public interface BoatRepository extends JpaRepository<Boat, Long> {
}
JSON 响应:
{
"_embedded": {
"boats": [
{
"id": 1,
"name": "Boat 1",
"description": "A brief description of the boat 1",
"_links": {
"self": {
"href": "http://localhost:8080/api/boats/1"
},
"boat": {
"href": "http://localhost:8080/api/boats/1"
},
"type": {
"href": "http://localhost:8080/api/boats/1/type"
}
}
},
...
]
}
预期结果(也带有类型对象):
{
"_embedded": {
"boats": [
{
"id": 1,
"name": "Boat 1",
"description": "A brief description of the boat 1",
"type": {
"id": 1,
"name": "Motorboats"
},
"_links": {
"self": {
"href": "http://localhost:8080/api/boats/1"
},
"boat": {
"href": "http://localhost:8080/api/boats/1"
},
"type": {
"href": "http://localhost:8080/api/boats/1/type"
}
}
},
...
]
}
我认为问题与 Spring Data Rest 有关,因为当我使用自己的控制器和存储库执行相同的应用程序时,我得到了我需要的数据。
有没有办法“配置”spring data rest?
【问题讨论】:
-
尝试删除@JsonBackreferences并使用eger加载
-
它不会改变结果
标签: json spring spring-boot rest relationship