Tôi có một thực thể mà trước đó đã được persited và có một mối quan hệ @OneToMany
với một thực thể khác. Để thêm một thực thể mới, tôi chỉ cần thêm đối tượng mới vào đối tượng được quản lý và sử dụng cascadeType.ALL
để tiếp tục thay đổi. Có cách nào mà tôi có thể nhận được id của các đối tượng mới được tạo ra hoặc nhận được đối tượng ban đầu (không được quản lý) mà tôi đã sử dụng với việc hợp nhất để cập nhật id của nó không?JPA Làm thế nào tôi có thể nhận được id/đối tượng được tạo khi sử dụng kết hợp từ cha mẹ nhưng con được tạo ra?
Trong pseudo-code Tôi mong chờ những điều sau đây xảy ra:
- bản mới sẽ được trả lại cho đơn vị sáp nhập
- Cũ bản sao sẽ được cập nhật cho các thực thể mới
Ví dụ: Cấp độ gốc A, id = 13 B đứa trẻ, id = 0
Thực chất, tôi muốn phát hành merge
trên cha mẹ nhưng thác persist
trên con (để phiên bản con ban đầu được cập nhật, không được sao chép).
Rõ ràng điều này không xảy ra. Tôi đang sử dụng chế độ ngủ đông làm nhà cung cấp.
Bạn đang sử dụng cơ sở dữ liệu nào, nhà cung cấp JPA và chiến lược tạo id? Với Oracle 11g + Hibernate + '@ SequenceGenerator', các đối tượng ghép nối tốt và trả về với id được gán mới. –
Tôi đang sử dụng MySql và '@ GeneratedValue'. Tôi không phải là một fan hâm mộ của id gộp lại mà tôi nghĩ là lý do tại sao nó hoạt động cho Oracle/'SequenceGenerator' –
@johnd Tôi đã chỉnh sửa cho câu hỏi trong một nỗ lực để làm rõ; nếu tôi hiểu lầm, vui lòng quay lại những thay đổi của tôi. –