2011-12-27 19 views
11

Vì vậy, có thể kết hợp cả hai cấu hình thay vì chỉ sử dụng một trong các cấu hình đó?Trong Hibernate: có thể trộn các chú giải và cấu hình XML cho một thực thể không?

Tất cả những gì tôi muốn là giữ tất cả cấu hình bằng Chú thích và đọc bảng bằng XML.

Có thể không?

Cảm ơn rất nhiều.

Chỉnh sửa: Tệp hbm.xml sẽ như thế nào? Tôi có cái này:

<?xml version="1.0" encoding="utf-8" ?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
<hibernate-mapping> 
    <class name="MyData" table="MyTable" > 
    </class> 
</hibernate-mapping> 

Và đừng biên dịch dtd.

+0

Bài đăng này cho biết bạn có thể làm điều đó. Bạn đã thử chưa https://forum.hibernate.org/viewtopic.php?f=1&t=931958&view=previous –

+0

Có, bây giờ tôi biết là có thể, nhưng tôi không biết làm thế nào để điền vào tập tin cấu hình xml của tôi chỉ với tên bảng. – ganzux

Trả lời

19

docs Hibernate (mới nhất)

Lưu ý rằng bạn có thể kết hợp việc sử dụng hbm.xml di sản và các chú thích cách tiếp cận. Phần tử tài nguyên có thể là tệp hbm hoặc một bộ mô tả triển khai XML EJB3 . Sự khác biệt là minh bạch cho quy trình cấu hình của bạn.

Bạn có thể kết hợp các lớp liên tục được chú thích và các tờ khai hbm.cfg.xml cổ điển với cùng một SessionFactory. Tuy nhiên, bạn có thể không khai báo một lớp nhiều lần (cho dù được chú thích hoặc thông qua hbm.xml). Bạn không thể kết hợp các chiến lược cấu hình (hbm vs chú thích) trong một thực thể cấu trúc phân cấp.

Để giảm bớt quá trình di chuyển từ tệp hbm sang chú thích, cơ chế cấu hình phát hiện sự sao chép ánh xạ giữa các tệp chú thích và tệp hbm. Các tệp HBM sau đó được ưu tiên hơn siêu dữ liệu được chú thích trên cơ sở lớp học. Bạn có thể thay đổi ưu tiên bằng cách sử dụng thuộc tính hibernate.mapping.precedence. Mặc định là hbm, class và thay đổi thành class, hbm sẽ ưu tiên các lớp học có chú thích các tệp trên hbm khi có xung đột xảy ra.