Cho phép nói rằng tôi có hai bảng - "con" và "cha mẹ" với quan hệ nhiều người. Những gì tôi cần là xóa các mục nhập con nếu bản ghi cha bị xóa.Hibernate: Làm thế nào để làm cho Hibernate xóa hồ sơ từ bảng con khi xóa cha mẹ nếu con được liên kết với cha mẹ với nhiều-một?
Nó không phải là vấn đề nếu tôi liên kết bảng con từ cha mẹ bằng cách tạo liên kết một-nhiều trong parent.hbm và đặt cascade = "all-delete-orphan".
Vấn đề là tôi không muốn mối quan hệ một-nhiều ở phía bên mẹ, vì vậy tôi đã tạo nhiều mối liên hệ ở bên con. Lý do là bảng con là khá lớn và tôi không muốn trích xuất hàng trăm bản ghi mỗi khi tôi sử dụng phụ huynh. Vì vậy, cấu hình của tôi trông như thế này:
child.hbm:
<many-to-one name="parent" class="com.example.Parent" column="parentid"/>
khi parent.hbm không có hiệp hội với trẻ em.
Câu hỏi đặt ra là: Làm cách nào để tạo bản ghi xóa Hibernate từ bảng con khi xóa cha/mẹ nếu con được liên kết với cha/mẹ với nhiều người?
Cảm ơn.
Tại sao bạn không sử dụng lười biếng một-nhiều trong phụ huynh và chỉ sử dụng tùy chọn xếp tầng? Khi bạn sử dụng phụ huynh, bạn sẽ không tải con. – gcores
Đó là những gì tôi đã suy nghĩ, nhưng tôi sợ nó sẽ mang lại sự nhầm lẫn cho cấu trúc. Tôi sẽ cần phải thêm trường "Set children" vào lớp cha không được sử dụng ở bất kỳ đâu trong mã, chỉ để xóa tầng ngủ đông. Bạn có nghĩ rằng nó là ok? –
serg
Vâng, đó là một mối quan hệ hợp lý. Sau khi tất cả các mối quan hệ cha-con không tồn tại. Đặt người đặt riêng tư nếu bạn không muốn phơi bày nó. – gcores