Tôi đang triển khai một Dịch vụ Web RESTful bằng cách sử dụng Jersey. Tôi sử dụng hibernate để giao tiếp với cơ sở dữ liệu (mySQL). lớp tài nguyên ngủ đông của tôi bao gồm:Nhiều-Một với Bảng tham gia trong các lớp tài nguyên ngủ đông cho một JAX-RS sử dụng Jersey
@Entity
public class Activity {
@Id
@GeneratedValue
private long id;
@ManyToOne
@JoinTable(name="category_activity",
joinColumns={@JoinColumn(name="activities_id")},
inverseJoinColumns={@JoinColumn(name="Category_id")})
private Category category;
}
và lớp Category:
@Entity
public class Category {
@Id
@GeneratedValue
private long id;
@OneToMany
@Fetch(FetchMode.JOIN)
@JoinTable(name = "category_activity",
joinColumns = { @JoinColumn(name = "Category_id") },
inverseJoinColumns = { @JoinColumn(name = "activities_id") })
@JsonIgnore
private Collection<Activity> activities;
}
tôi đã sử dụng truy vấn này để lấy ativities:
session.createQuery("from Activity a join a.category cs where cs.id= :categoryId order by a.key").setLong("categoryId", categoryId).list();
Kết quả ở định dạng JSON không phải là đúng như :
[[{"id":26,"key":"other","name":"Other","cost":100.0,"category":{"id":10,"name":"General","description":""}},{"id":10,"name":"General","description":""}]]
Như bạn thấy thể loại được in 2 lần và chúng ta có thêm [] xung quanh nó. Khi tôi sử dụng một cơ chế khác của One-To-Nhiều mối quan hệ trong loại lớp như:
@OneToMany(targetEntity = Activity.class, mappedBy = "category", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JsonIgnore
private Collection<Project> activities;
Và trong lớp Hoạt động:
@ManyToOne(optional = false)
private Category category;
Và truy vấn này:
session.createQuery("from Activity as a where a.category.id= :categoryId order by a.key").setLong("categoryId", categoryId).list();
công trình Tất cả mọi thứ khỏe. Nhưng tôi phải sử dụng bảng tham gia vì tôi không giả sử thay đổi cơ sở dữ liệu.
Kết quả thích hợp sẽ giống như thế:
[{"id":26,"key":"other","name":"Other","cost":100.0,"category":{"id":10,"name":"General","description":""}}]
Tôi đánh giá cao sự giúp đỡ nào.
tôi apprec iate cho phản ứng. Giải pháp bạn đề cập có cùng vấn đề. – Ali
Xem câu trả lời đã chỉnh sửa của tôi –
Bây giờ, nó hoàn toàn hoạt động. – Ali