【发布时间】:2017-02-26 22:10:46
【问题描述】:
我有两个模型正在尝试从 REST API(宠物和媒体)取回数据。我试图通过 FetchType.EAGER 注释急切地加载宠物和媒体之间的 oneToMany 关系,但是当我编写 MediaRepository 时数据没有出现。如果我不实现该文件,媒体关系和数据会在响应中返回。
随着 MediaRepository.java 的实现,GET /pets 返回:
{
"id": 72,
"name": "Spot",
"description": "Annoying as hell",
"media": [], <-- why is this here only if I don't implement MediaRepository?
...
}
没有 MediaRepository.java 实现,GET /pets 返回:
{
"id": 72,
"name": "Spot",
"description": "Annoying as hell",
... (No media array in response)
}
Pet.java
@Entity
public class Pet implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name="name")
private String name;
@Column(name="description")
private String description;
@OneToMany(cascade=CascadeType.ALL, mappedBy="pet", FetchType.EAGER, orphanRemoval=true)
private List<Media> media;
@ManyToOne
private Category category;
@Enumerated(EnumType.STRING)
private Status status;
}
Media.java
@Entity
public class Media implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name="url")
private String url;
@Column(name="title")
private String title;
@ManyToOne
private Pet pet;
}
PetRepository.java
import org.springframework.data.jpa.repository.JpaRepository;
public interface PetRepository extends JpaRepository<Pet, Long> {
}
MediaRepository.java
import org.springframework.data.jpa.repository.JpaRepository;
public interface MediaRepository extends JpaRepository<Media, Long> {
}
【问题讨论】:
-
你在使用 Spring Data Rest 吗?
-
@AlanHay 是的,我是。
-
能否也加db表结构,pet如何映射到media?
标签: java spring hibernate spring-data-jpa spring-data-rest