Có thể cấu hình Hibernate để lưu trữ một lớp thành phần trong một bảng riêng biệt không?Lập bản đồ thành phần hibernate vào một bảng riêng biệt
Lấy ví dụ sau đây:
<class name="test.ClassA">
<property name="propA"/>
<component name="componentProp" class="test.ClassB">
<property name="propB"/>
</component>
</class>
này bản đồ vào một bảng gọi là MyClass
với hai cột propA
và propB
. Những gì tôi muốn là ánh xạ các thuộc tính của thành phần với một bảng gọi là ClassB
.
Những gì tôi không muốn làm là cấu hình ClassB
như một thực thể tự nó (nó không có ý nghĩa bản sắc bên ngoài của ClassA
), để bác bỏ một hiệp hội bình thường. Ngoài ra, tôi không thể sửa đổi mô hình đối tượng (mã được tạo ra), vì vậy tôi không thể giới thiệu một thuộc tính ID là ClassB
.
Điều này có vẻ là một khoảng trống trong chức năng của Hibernate - thành phần <> ánh xạ thực hiện "nhiều lớp thành một bảng" và tham gia <> không "một lớp đến nhiều bảng", nhưng kỳ quặc không có cách nào rõ ràng để thực hiện "nhiều lớp học đến nhiều bảng", mà không cần đến các hiệp hội thực thể.
Lý do cơ bản của tôi cho điều này là tôi muốn lược đồ DB giống với mô hình đối tượng chặt chẽ như thực tế và bao gồm các bảng riêng biệt cho thành phần ClassB
. Tôi hiểu rằng điều này sẽ không quy mô - bạn không thể làm các thành phần lồng nhau, ví dụ, nhưng đây không phải là một vấn đề trong tình huống cụ thể này.
Ah, trông giống như những gì tôi cần, cảm ơn vì điều đó. Tôi sẽ đưa cô ấy ra cho một spin và xem nếu đó là vé. – skaffman
Tôi tìm thấy kỹ thuật này được ghi trong phần 8.1.3 của "Java Persistence with Hibernate". Có vẻ như âm thanh. Cảm ơn một lần nữa. – skaffman
Cảm ơn. Tôi bằng cách nào đó quản lý để không bao giờ đọc cuốn sách đó :-) – ChssPly76