Làm mới (parentObject) sẽ là một lựa chọn tốt, nhưng đối với tôi, trước tiên, nó tìm nạp tất cả trẻ em một với yêu cầu duy nhất. Không có đợt, không có truy vấn phụ, không tham gia. Rất tệ!
Nó đã giúp. Xóa() bộ sưu tập con của đối tượng gốc; Tôi cũng đã đuổi các đồ vật trẻ em trước đó.
(những điều này đã được thay đổi bằng bản cập nhật HQL trước khi nhiều phụ trang của cha mẹ/con SaveOrUpdate sẽ gây dựng lại chỉ mục nhóm đắt tiền).
EDIT: Tôi đã xóa bản cập nhật HQL một lần nữa, vì truy vấn (chỉ số giảm dần theo số lượng lớn, độc nhất) đắt hơn hàng trăm bản cập nhật hàng đơn lẻ trong một lô. Vì vậy, tôi đã kết thúc trong một SaveOrUpdate đơn giản (parentObject), mà không cần phải làm mới.
Lý do là bộ sưu tập trẻ em có ràng buộc duy nhất trên ParentID và Index (số tuần tự), điều này sẽ dẫn đến vi phạm độc đáo trong khi cập nhật các mục con đã thay đổi. Vì vậy, chỉ số lần đầu tiên được tăng lên 1000000 (hoặc một số cao tùy ý) cho tất cả trẻ em, sau đó sau khi thay đổi, giảm đi một lần nữa.
Nguồn
2012-11-14 18:42:35
Xin lỗi vì đã nói điều này nhưng điều đó không làm việc :(Nó hoạt động trong kịch bản này: 1) pEntity.pCollection trống 2) Tôi thêm một mục vào bộ sưu tập trong cơ sở dữ liệu bằng tay 3) Tôi có thể xem được cập nhật bộ sưu tập nhưng không hoạt động trong trường hợp này: 1) pEntity.pColelction có giá trị 2) Tôi thay đổi giá trị của một mục trong pEntity.pCollection theo cách thủ công trong cơ sở dữ liệu 3) sau khi làm mới tôi vẫn có các mục tương tự trong pEntity .pCollection ... – Katalonis
Làm mới một mình sẽ hoạt động trong trường hợp đó ** nếu ** pCollection cascades. Nếu không, bạn phải tự làm mới các mục của nó. –
'Làm mới' một mình dường như là đủ cho tôi cho cả hai bổ sung và loại bỏ vào một bộ sưu tập lười biếng trên một thực thể. Một liên kết đến bất kỳ vấn đề đã biết hoặc hãy cẩn thận sẽ hữu ích nếu có những trường hợp đặc biệt mà tôi cần biết. –