2009-05-26 24 views
15

Hibernate không có hỗ trợ cho tầng "xóa-mồ côi" của mối quan hệ một-một hoặc nhiều-một. Gần đây tôi đã phát hiện ra điều này, và điều đó khiến tôi đau đầu nghiêm trọng. Tôi có một vài lớp học trong mô hình của tôi được thiết kế sao cho đứa trẻ không có ý nghĩa thực sự ngoài cha mẹ. Tôi chỉ có một DAO cho phụ huynh, và không phải là một DAO riêng biệt cho lớp trẻ em.Giải pháp cho việc thiếu hỗ trợ xóa trẻ mồ côi của Hibernate cho mối quan hệ một-một và nhiều-một?

này hoạt động:

parent.getChild().setProperty("something"); 
parentDao.save(parent); 

này không làm bất cứ điều gì:

parent.setChild(null); 
parentDao.save(parent); 

này là rất đáng tiếc bởi vì bây giờ tôi phải suy nghĩ lại lớp DAO tôi và một vài trong số các hoạt động của dịch vụ của tôi lớp.

Có ai đã làm việc xung quanh giới hạn này một cách thanh lịch không? Tôi thực sự muốn chỉ quan tâm đến bản thân mình với các đối tượng cha mẹ bền bỉ. Trong trường hợp đặc biệt này, không có lý do gì để đối phó với sự kiên trì của đứa trẻ ngoại trừ việc làm cho Hibernate hạnh phúc và chỉ trong trường hợp xóa trẻ em.

Trả lời

4

Nó dường như là một vẽ lại trong khuôn khổ họ THỂ giải quyết, hy vọng sớm

http://opensource.atlassian.com/projects/hibernate/browse/HHH-2608

vé đó đã được mở cửa vào năm 2007 và bài viết mới nhất phàn nàn về vấn đề này là như gần đây như một tháng trước đây .

Điều tôi đang làm là đặt thuộc tính vào đối tượng của tôi được gọi là isMarkedForDeletion. Và nếu điều đó trả về sự thật, tôi có dao của tôi hoặc dịch vụ của tôi thực hiện xóa một cách rõ ràng. Nó chắc chắn là không tốt như xóa-trẻ mồ côi sẽ được, nhưng nó hoạt động tốt, đủ trong khung mùa xuân + hibernate.

Tôi sẽ theo dõi bài đăng này vì đây là câu hỏi rất quan trọng.

+0

Có vẻ như nó đã được giải quyết khoảng một năm trước - http://opensource.atlassian.com/projects/hibernate/browse/HHH-4726 –

+1

@Savannah: Có vẻ như 'delete-orphan' được hỗ trợ cho' 'trong trường hợp quan hệ không phải là' ràng buộc' (xem http://docs.jboss.org/hibernate /core/3.6/reference/en-US/html/mapping.html#onetoone4). Tôi khó có thể giải thích điều này cho bản thân mình, như một người một luôn có một ràng buộc khóa tham chiếu. –

3

Cách giải quyết được mô tả ở đây https://forum.hibernate.org/viewtopic.php?p=2379216 có hiệu quả đối với tôi. Nó sử dụng liên kết @OneToMany với một phần tử duy nhất ở phía "nhiều" để triển khai một hiệp hội @OneToOne và giải quyết vấn đề xóa bỏ trẻ mồ côi.

-1

Viết cơ sở dữ liệu khi kích hoạt cập nhật trên bảng con. Nếu khóa cha là null xóa các bản ghi từ con

+0

bạn có thể thêm nhiều nội dung vào câu trả lời –

Các vấn đề liên quan