Tôi có một ứng dụng tải các đối tượng qua chế độ ngủ đông và sau đó chuyển các đối tượng đó đến một tầng khác như các đối tượng tách rời. Bất kỳ thay đổi nào đối với các đối tượng đó đều được gửi xuống tầng hibernate nơi tôi gọi saveOrUpdate()
trên các đối tượng đó.Sẽ Hibernate saveOrUpdate phương pháp xóa trẻ em?
Sẽ ngủ đông xóa các mối quan hệ một-nhiều đối tượng con có trong bộ sưu tập trong các đối tượng được chuyển vào saveOrUpdate()
nếu tôi chỉ xóa đối tượng con khỏi bộ sưu tập trước khi gọi saveOrUpdate()
?
Nếu không, thì điều này thường được thực hiện như thế nào trong ứng dụng ngủ đông sử dụng các đối tượng tách rời?
Điều đó có ý nghĩa. Tuy nhiên, khi tôi đặt CascadeType.ALL, orphanRemoval = true trên bộ sưu tập đối tượng con vẫn chưa bị xóa. Điều này có thể là do thực tế tôi đang sử dụng chú thích JoinColumn kết hợp với chú thích OneToMany? – Tom
@Tom: Có thể không, không, '@ JoinColumn' chỉ được sử dụng để ghi đè tên cột tham gia mặc định. Có vẻ như Hibernate không nghĩ rằng đó là một đứa trẻ mồ côi. Bạn có chắc một số thực thể khác không có tham chiếu đến đứa trẻ đó không? – skaffman
Nó chắc chắn không được tham chiếu từ một thực thể khác. Mối quan hệ db cơ bản thực sự là một ManyToMany, tuy nhiên, và tôi đang sử dụng OneToMany với JoinColumn để làm cho mô hình đơn giản hơn. Có lẽ đó là ném nó? Nếu không, tôi cũng chỉ nhận thấy rằng một số thực thể con của đứa trẻ chứa các mối quan hệ ManyToOne mà không thể có thuộc tính orphanRemoval được đặt trên chúng. Có lẽ đó là ngăn chặn xóa của cha mẹ bằng cách nào đó. – Tom