2010-06-18 40 views
6

Tôi muốn thêm một đối tượng giá trị vào một lớp được ánh xạ nơi một cột được cố định tùy thuộc vào lớp chứa thành phần đó. Làm thế nào tôi có thể làm một cái gì đó như thế này?Hằng số trong các tệp ánh xạ Hibernate

<component name="aComponent"> 
    <property name="abc" column="cde"/> 
    <property name="xyz" value="FIXED"/> 
</component> 

Thật không may, thuộc tính giá trị không tồn tại. Có cách nào khác để áp dụng một giá trị không đổi cho thuộc tính?

Xin cảm ơn trước.

Trả lời

4

Bạn nên sử dụng công thức, ví dụ:

<property name="xyz" formula="1" type="big_decimal"/> 

Từ Java Persistence with Hibernate, ch. 4.4.1:

Công thức SQL được được đánh giá mỗi khi đơn vị được lấy từ cơ sở dữ liệu (và không phải bất cứ lúc nào khác, vì vậy kết quả có thể bị lỗi thời nếu các tài sản khác được sửa đổi). Thuộc tính không có thuộc tính cột (hoặc phần phụ) và không bao giờ xuất hiện trong SQL INSERT hoặc UPDATE, chỉ trong SELECT s. Công thức có thể tham chiếu đến các cột của bảng cơ sở dữ liệu, chúng có thể gọi các hàm SQL, và thậm chí chúng có thể bao gồm các phép chọn SQL. Biểu thức SQL được chuyển đến cơ sở dữ liệu cơ sở như; đây là cơ hội tốt để ràng buộc tệp ánh xạ của bạn vào một sản phẩm cơ sở dữ liệu cụ thể , nếu bạn không cẩn thận và dựa vào nhà khai thác hoặc từ khóa cụ thể của nhà cung cấp .

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