2012-03-09 35 views

Trả lời

7

Từ the documentation:

cập nhật, chèn (không bắt buộc - mặc định là true): xác định rằng cột ánh xạ cần được đưa vào câu lệnh SQL UPDATE và/hoặc INSERT báo cáo. Đặt cả hai thành false cho phép thuộc tính "có nguồn gốc" có giá trị được khởi tạo từ một số thuộc tính khác ánh xạ tới các cột tương tự hoặc bằng trình kích hoạt hoặc ứng dụng khác.

+1

Lợi ích của việc sử dụng nó là gì? – Chillax

+3

Không có lợi thế. Bạn đặt update = false nếu bạn không muốn cập nhật cột (ví dụ: nếu cột được cập nhật bởi trình kích hoạt hoặc cột khác). Và bạn đặt chèn thành false nếu bạn không muốn cột được chèn vào (ví dụ, nếu nó được khởi tạo bởi trình kích hoạt hoặc cột khác). Trong 99% các trường hợp, hãy để nó ở giá trị mặc định: true. –

+0

Làm cách nào để tôi thực hiện việc này cho một bộ (con)? – PhantomReference

10

Sử dụng cập nhật = "false", chèn = "false" khi thuộc tính được tính/bắt nguồn hoặc khi cơ sở dữ liệu hoặc trình kích hoạt chịu trách nhiệm chèn/hoặc cập nhật giá trị. Ví dụ, nếu DB sẽ tự động tạo ra một giá trị trên INSERT mà bạn muốn sử dụng, sau đó chỉ định insert = "false" để Hibernate sẽ không bao gồm thuộc tính trong câu lệnh INSERT.

Ví dụ khác, sẽ là thuộc tính được tính toán/có nguồn gốc thông qua công thức SQL: Ví dụ: bạn có thể truy lục tổng số thứ tự của từng khách hàng. Ví dụ:

<property name="totalOrders" insert="false" update="false"> 
    <formula>(select sum(ORDER.TOTAL) from ORDER where ORDER.FK_CUSTOMER=ID)</formula> 
</property> 

Trong trường hợp này chúng tôi đặt insert = "false", update = "false" vì đây rõ ràng là kết quả có nguồn gốc và chúng tôi không thể cập nhật trực tiếp.

Hiệu suất? Nó không phải về hiệu suất - đó là những gì mà bản đồ cơ sở dữ liệu của bạn yêu cầu.

+0

Làm thế nào tôi có thể làm điều này cho một bộ? – PhantomReference

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