Có đúng là tôi không bao giờ cần sử dụng EntityManager#merge()
, miễn là tôi chỉ xử lý
đính kèm
pháp nhân được quản lý? Nói cách khác, gọi merge()
trên một số
đính kèm
thực thể được quản lý không có hiệu lực?JPA: đang hợp nhất bao giờ cần thiết cho các thực thể được đính kèm?
Hoặc có trường hợp nào việc hợp nhất sẽ phục vụ mục đích không? Tôi tìm tên cho thấy rằng tôi có thể sử dụng nó để đối phó với một OptimisticLockException
... :)
Sửa: Trong điều kiện rất đơn giản, sự hiểu biết của tôi về một quản lý Entity là thay đổi thuộc tính của nó/lĩnh vực được tiếp tục với DB ở cuối giao dịch.
Thx! Được quản lý == được đính kèm? Bạn có thể vui lòng giải thích về các thực thể thác tham chiếu (hoặc chỉ cho tôi hướng tới tài liệu để đọc) không? Tôi cho rằng đối với một thực thể được đính kèm, tất cả các thực thể được tham chiếu cũng được đính kèm ... – Hank
được quản lý được đính kèm, vâng. Tài liệu tham khảo ? đặc tả JPA có lẽ ... chỉ cần tìm trong đó để "hợp nhất". – DataNucleus
Phụ thuộc vào việc thực hiện JPA bạn đang sử dụng nhưng 'Managed! = Attached'. Nếu bạn gửi một thực thể ra khỏi ngữ cảnh (nói với một cuộc gọi dịch vụ) và nhận lại nó sau này nó sẽ được gắn vào ngữ cảnh kiên trì, nhưng không được quản lý lại cho đến khi 'merge' được gọi trên nó. [EntityManager.Contains] (http://java.sun.com/javaee/5/docs/api/javax/persistence/EntityManager.html#contains (java.lang.Object)) sẽ cho bạn biết nếu đối tượng được quản lý. –