Tôi có ứng dụng java ứng dụng hiện tại của ứng dụng google chạy với jpa và bây giờ tôi đang cố di chuyển để phản đối cho nhiều mục đích khác nhau.Google App Engine java thay thế jpa @ OneToMany/@ ManyToOne với objectify
Ứng dụng hiện tại có biểu diễn dưới đây của các thực thể.
Class Parent{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Key key;
@OneToMany(cascade=CascadeType.ALL, mappedBy="parent")
private List<Child> childs = null;
}
Class Child{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Key key;
@ManyToOne
private Parent parent;
}
Làm cách nào để tôi có được đại diện trên trong Objectify? Tôi đang sử dụng objectify4.
Tôi đã thấy @Parent, nhưng có vẻ như không thể tải danh sách các thực thể con trực tiếp trong khi tìm nạp phụ huynh?
Cảm ơn,
Ramesh.V
Cảm ơn phản hồi của bạn, là nó có thể lấy các đối tượng trẻ em từ cha mẹ mà không cần lưu trữ các phím con/tài liệu tham khảo trong mẹ. –
Các liên kết được biểu diễn bằng 'Phím' để bạn cần chúng trong 'Parent' hoặc' Child'. Nếu bạn có chúng trong cả hai bạn tạo ra một hiệp hội hai chiều khó duy trì và thường không hữu ích lắm. Bạn có thể bỏ mảng 'Key' trong' Parent'. Sau đó, bạn chỉ cần các phương thức của Objectify để lọc để nhận tất cả các đối tượng 'Child' với một' Parent's 'Key' cụ thể. Điều này đặc biệt hữu ích nếu bạn có một số lượng lớn trẻ em cần được lọc tiếp theo các tiêu chí hoặc phân trang nhất định. –
Nhưng JPA hoạt động như thế nào mà không lưu trữ khóa ở cha mẹ hoặc con? Ứng dụng java GAE hiện có của tôi sử dụng JPA và tôi thấy kho dữ liệu không có bất kỳ khóa nào được lưu trữ ở cả con hoặc cha mẹ. Và nó chỉ có mối quan hệ cha mẹ con không có chìa khóa được lưu trữ trong cả cha mẹ hoặc con. Thay đổi của tôi bây giờ sẽ không ảnh hưởng đến cơ sở dữ liệu hiện có. Tôi làm nó như thế nào. Cảm ơn bạn đã khám phá chi tiết. –