Tôi đang thu thập thông tin về phương thức flush (), nhưng tôi không rõ khi nào sử dụng nó và cách sử dụng nó một cách chính xác. Từ những gì tôi đọc, hiểu biết của tôi là nội dung của bối cảnh liên tục sẽ được đồng bộ hóa với cơ sở dữ liệu, tức là phát hành các câu lệnh nổi bật hoặc làm mới dữ liệu thực thể.
Bây giờ tôi nhận được kịch bản sau với hai thực thể A
và B
(trong mối quan hệ một đối một, nhưng không được JPA thực thi hoặc mô hình hóa). A
có PK tổng hợp, được đặt theo cách thủ công và cũng có trường IDENTITY được tạo tự động recordId
. Điều này recordId
phải được ghi vào thực thể B
dưới dạng khóa ngoại cho A
. Tôi đang tiết kiệm A
và B
trong một giao dịch duy nhất. Vấn đề là giá trị được tạo tự động A.recordId
không có sẵn trong giao dịch, trừ khi tôi thực hiện một cuộc gọi rõ ràng em.flush()
sau khi gọi em.persist()
tiếp A
. (Nếu tôi có PK IDENTITY được tạo tự động thì giá trị được cập nhật trực tiếp trong thực thể, nhưng đó không phải là trường hợp ở đây.)
Có thể em.flush()
gây hại gì khi sử dụng nó trong một giao dịch không?