Tôi có hai thực thể, Công ty và Công việc, với mối quan hệ hai chiều OneToMany. Vấn đề của tôi là tôi không thể tải xuống công ty List<Job> jobs
của Công ty.Nghỉ ngơi dữ liệu mùa xuân JPA - Không thể tải một cách lười biếng OneToMany mối quan hệ hai chiều
Ví dụ khi tôi làm:
GET /api/companies/1
đây là phản ứng JSON:
{
"id": 1,
"name": "foo",
...
"_embedded": {
"jobs": [
{...},
...
{...}
],
"employees": [
{...},
{...}
]
},
"_links": {
"self": {
"href": "http://localhost:8080/api/companies/1"
},
"jobs": {
"href": "http://localhost:8080/api/companies/1/jobs"
},
"employees": {
"href": "http://localhost:8080/api/companies/1/employees"
}
}
}
Tôi không muốn có _embedded
kể từ khi tôi đã không đặt FetchType = háo hức. Dưới đây là mô hình của tôi:
Company.java
@Entity
public class Company {
@Column(nullable = false, unique = true)
private String name;
@OneToMany(mappedBy = "company", fetch = FetchType.LAZY)
private List<Job> jobs;
...
public Company() {
}
...
}
Job.java
@Entity
public class Job {
@Column(nullable = false)
public String title;
@Column(length = 10000)
public String description;
@ManyToOne(fetch=FetchType.LAZY)
private Company company;
...
public Job() {
}
...
}
Như bạn có thể nhìn thấy điều tương tự xảy ra đối với các mối quan hệ OneToMany khác (nhân viên). Tôi có thể tránh trả lại toàn bộ danh sách các cơ hội việc làm hoặc nhân viên mỗi lần không?
CHỈNH SỬA: từ phía Công việc, tải chậm hoạt động tốt! Tôi không nhận được phản hồi của công ty liên quan đến công việc. Tôi phải làm rõ ràng /api/jobs/123/company
để có được công ty.
EDIT2: Dự đoán chỉ hoạt động đối với bộ sưu tập. Trong trường hợp này nó không phải là những gì tôi cần. Các đoạn trích có thể hoạt động nhưng tôi muốn tránh chúng. Tôi không muốn giải thích làm /api/companies/1?projection=MyProjection
vì tôi sẽ không sử dụng nhiều hơn một. Tôi muốn thay đổi hành vi mặc định, giống như các phép chiếu trong bộ sưu tập.
EDIT3: tôi đã cố gắng này
@RestResource(exported = false)
@OneToMany(mappedBy = "company")
private List<Job> jobs;
và tôi nhận được lỗi Detected multiple association links with same relation type! Disambiguate association
.
nó thực sự gây phiền nhiễu. Tôi chỉ cần loại bỏ _embedded
. Có gì không?
Đây không phải là thực sự là một câu hỏi về JPA, đó là một câu hỏi về việc liệu các bộ sưu tập trong 'Company' nên được đăng. Nó sẽ là cùng một vấn đề nếu mối quan hệ chỉ là POJO không được ánh xạ tới các đối tượng liên tục. – wrschneider
Trong trường hợp này một '@RestResource (xuất khẩu = false) 'hoặc' @ JsonIgnore' mục 'lĩnh vực jobs' nên đủ (xem [ở đây] (http://docs.spring.io/spring-data/rest/docs /current/reference/html/#customizing-sdr.hiding-repositories)). –
@DavidRiccitelli nhưng tôi cần chúng được xuất. Tôi chỉ cần tải lười biếng họ, vì vậy tôi sẽ nhận được công việc của một công ty duy nhất khi tôi làm '/ api/công ty/1/jobs'. –