2010-12-07 20 views
11

Tôi chỉ mới bắt đầu nâng cấp một ứng dụng đã sử dụng Hibernate 3.5.6.Final lên 3.6.0.Final, và đã có một số hickups. Các hickup cuối cùng tôi không thể tìm thấy một giải pháp cho.Vô hiệu hóa Hibernate Validation về lưu/cập nhật với Hibernate 3.6.0.Final

3.6.0.Final dường như tự động bật xác thực bean khi đối tượng được lưu/cập nhật qua Hibernate. Điều này là rất xấu bởi vì một số xét nghiệm của tôi không làm phiền thiết lập tất cả các thuộc tính - chúng không cần thiết. Tôi thành thật không thấy điểm để thiết lập tất cả các lĩnh vực 'mô tả' và vô số các lĩnh vực khác chỉ để tuân thủ một số xác nhận tùy ý.

Điều này sẽ buộc tôi bỏ ra hàng giờ để tạo các đối tượng hợp lệ trong tất cả các thử nghiệm của tôi (hiện tại tôi có hơn 1300 kiểm tra chức năng). Và thẳng thắn, nó sẽ là vô nghĩa bởi vì tôi chắc chắn rằng tất cả các xác nhận đang xảy ra trong MVC và không có cách nào khác để lấy dữ liệu vào cơ sở dữ liệu hiện tại.

Tôi cũng không muốn phát sinh hiệu suất trúng bằng cách xác thực hạt của tôi hai lần - một lần trong MVC, và sau đó một thời gian khác trong Hibernate. Nó không cần thiết trong trường hợp của tôi.

Có cách nào tôi có thể tắt tính năng này không? Tôi đang sử dụng các tệp ánh xạ Hibernate và Spring, chứ không phải JPA (tôi không thích tất cả các chú thích).

Trả lời

22

Thêm dòng sau vào persistence.xml:

<validation-mode>NONE</validation-mode> 

hoặc thêm thuộc tính vào hibernate.cfg.xml:

<property name="javax.persistence.validation.mode">none</property> 

Xem 23.1.2. Configuration cho các tùy chọn hơn.

+0

Có cách nào tôi có thể thực hiện điều đó qua mùa xuân không? Tôi không sử dụng JPA, chỉ tập tin xml thường xuyên lập bản đồ ngủ đông. – egervari

+0

@egervari: Đã cập nhật. – axtavt

+0

Cảm ơn, điều đó đã làm được! Phew! – egervari

2

Đặt thuộc tính hibernate.validator.autoregister_listeners thành false. Bạn cũng có thể đặt hibernate.validator.apply_to_ddl thành sai.

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