Thật dễ dàng để sử dụng @AdditionalCriteria trong EclipseLink ví dụ để lọc ra các thực thể bị xóa mềm nhưng có cách nào vô hiệu hóa nó tạm thời trước khi thực hiện một truy vấn cụ thể không?Có cách nào để vô hiệu hóa @AdditionalCriteria trong EclipseLink không?
Trả lời
Có, có thể, với cách giải quyết dễ dàng. Tôi đã chỉ định các chú thích @AdditionalCriteria như thế này:
@AdditionalCriteria(":disableDeletedFeature = 1 or this.isDeleted = false")
và chỉ định một giá trị tài sản mặc định cho lá cờ vô hiệu hóa trong persistence.xml:
<property name="disableDeletedFeature" value="0"/>
nên bằng cách lọc mặc định được kích hoạt nhưng bạn có thể vô hiệu hóa nó dễ dàng ở cấp EntityManager như sau:
entityManager.setProperty("disableDeletedFeature", 1);
Nó hoạt động tốt cho tôi, hy vọng điều đó sẽ hữu ích!
Nếu bạn sử dụng truy vấn SQL gốc, tiêu chí sẽ không được nối thêm.
Nếu không, không có cách dễ dàng để tắt tính năng này, trừ khi bạn tạo một đơn vị lưu giữ khác hoặc một lớp khác không có tiêu chí bổ sung.
Một điều bạn có thể làm là đặt điều kiện OR trong tiêu chí dựa trên thuộc tính phiên, sau đó khi bạn đặt thuộc tính này thành true, bạn có thể vô hiệu hóa tiêu chí.
Bạn có thể đăng nhập yêu cầu nâng cao để có tùy chọn được thêm vào để không thêm nó vào truy vấn.
Tôi sử dụng eclipselink 2.4.1. Nó chỉ làm việc với BÁO GIÁ MARK ứng với giá trị tài sản:
@AdditionalCriteria(":disableDeletedFeature = '1' or this.isDeleted = false")
và ở đây:
entityManager.setProperty("disableDeletedFeature", '1');
- 1. Có cách nào để vô hiệu hóa nhãn không?
- 2. Tạo một loại giá trị không thể vô hiệu hóa có thể vô hiệu hóa
- 3. Có cách nào thông minh hơn để vô hiệu hóa bộ lọc Doctrine2 trong Symfony2.1 không?
- 4. Làm cách nào để vô hiệu hóa Rùa RZR?
- 5. Làm cách nào để vô hiệu hóa UISegmentedControl?
- 6. Tôi làm cách nào để vô hiệu hóa _moz_resizing?
- 7. SignalR - Làm cách nào để vô hiệu hóa WebSockets
- 8. Làm cách nào để vô hiệu hóa cuộn ScrollView?
- 9. Làm cách nào để vô hiệu hóa Nhấp vào WebView?
- 10. Làm cách nào để vô hiệu hóa hộp bóng?
- 11. Làm cách nào để vô hiệu hóa tác vụ gửi
- 12. Vô hiệu hóa UISearchBar
- 13. Làm thế nào để vô hiệu hóa subversion trong netbeans
- 14. Làm thế nào để vô hiệu hóa nút trong UIActionSheet?
- 15. Có cách nào để vô hiệu hóa tất cả cảnh báo bằng pragma không?
- 16. Làm thế nào để vô hiệu hóa javax.swing.JButton trong java?
- 17. Làm thế nào để vô hiệu hóa PerfWatson trong VS2012?
- 18. Làm thế nào để vô hiệu hóa rìa trong Emacs?
- 19. Có cách nào để vô hiệu hóa panning trên máy tính bảng - trang web không?
- 20. Có cách nào để vô hiệu hóa hoạt ảnh hiển thị/ẩn của ActionBar không?
- 21. Làm cách nào để kiểm tra xem menu thả xuống có bị vô hiệu hóa không?
- 22. Có cách nào để vô hiệu cảnh báo xml không?
- 23. Làm thế nào để vô hiệu hóa mod_deflate trong apache2?
- 24. Cách ẩn/vô hiệu hóa admob adview?
- 25. RichFaces 4 - cách vô hiệu hóa skin
- 26. QT - Cách vô hiệu hóa Nút ấn
- 27. Tôi có thể vô hiệu hóa TTreeNode không?
- 28. git cách vô hiệu hóa push
- 29. Whats sự khác biệt giữa prop ('vô hiệu hóa', 'vô hiệu hóa') và chống đỡ ('vô hiệu hóa', đúng)
- 30. Vô hiệu hóa kính lúp trong UITextField
Tôi xem nó như là một cách giải quyết chứ không phải là một giải pháp khuyến khích nhưng kể từ khi tôi đã thực hiện nó rất tương tự (sử dụng @AdditionalCriteria ("this.deleted =: SOFTDELETED")), tôi chấp nhận câu trả lời này. @ James, có một số nói về việc thực hiện hỗ trợ cấp bản địa cho nó trên wiki phát triển Eclipselink (http://wiki.eclipse.org/Talk:EclipseLink/Development/AdditionalCriteria). – Kalle
Cảm ơn Kristof và Kalle. Cả hai giải pháp đều làm việc cho tôi trên PostgreSQL, nhưng: disableDeletedFeature = 1 không hoạt động cho các thử nghiệm đơn vị của chúng tôi với H2. Vì vậy, tôi đã sử dụng @AdditionalCriteria ("this.blocked =: disableDeletedFeature OR this.blocked = false") –