在EclipseLink中使用@AdditionalCriteria很容易,例如可以過濾掉軟刪除的實體,但在執行特定查詢之前有什麼方法暫時禁用它嗎?有沒有辦法在EclipseLink中禁用@AdditionalCriteria?
7
A
回答
6
是的,這是可能的,一個簡單的解決方法。我指定的@AdditionalCriteria註釋是這樣的:
@AdditionalCriteria(":disableDeletedFeature = 1 or this.isDeleted = false")
並在persistence.xml禁用標誌指定一個默認的屬性值:
由<property name="disableDeletedFeature" value="0"/>
所以默認過濾功能,但你可以將其禁用在EntityManager級別很容易就可以這樣:
entityManager.setProperty("disableDeletedFeature", 1);
它對我來說都很好,希望它有幫助!
1
如果使用本機SQL查詢,則不會追加條件。
否則,除非您創建另一個持久性單元或沒有附加條件的其他類,否則沒有簡單的方法禁用它被追加。
你可以做的一件事就是在基於會話屬性的條件中放入一個OR條件,然後當你設置這個屬性爲true時,你可以禁用這個條件。
您可以登錄增強請求以添加一個選項,而不將其附加到查詢。
0
我使用eclipselink 2.4.1。它只用引號作品的屬性值:
@AdditionalCriteria(":disableDeletedFeature = '1' or this.isDeleted = false")
這裏:
entityManager.setProperty("disableDeletedFeature", '1');
相關問題
- 1. 有沒有辦法禁用標籤?
- 2. 有沒有辦法禁用android市場?
- 3. 有沒有辦法禁用xml警告?
- 4. 有沒有辦法在db2 v7中啓用/禁用約束?
- 5. 有沒有辦法在Visual Studio 2012中禁用快速查找?
- 6. 有沒有辦法在OpenGTS中禁用圖釘?
- 7. 有沒有辦法在Firefox或Chrome中禁用CSS3支持?
- 8. 有沒有辦法在webpack 2中禁用抖動?
- 9. 有沒有辦法在Google的Chrome中禁用IPv6?
- 10. 有沒有辦法在iPhone中禁用錄音功能?
- 11. 有沒有辦法在spring4中禁用註釋?
- 12. 有沒有辦法在UNIX中臨時禁用fd 2?
- 13. 有沒有辦法在Office.js中禁用初始化定時器?
- 14. 有沒有辦法在OpenLayers 3中禁用旋轉?
- 15. 有沒有辦法在GHC中禁用常量摺疊優化?
- 16. 有沒有辦法在CocoaPods中禁用默認的pch文件?
- 17. 有沒有辦法在svg-edit中禁用縮放?
- 18. 有沒有辦法在sails.io.js中禁用jsonp?
- 19. 有沒有辦法在RDLC報告上禁用空白區域?
- 20. 有沒有辦法禁用ShowcaseView背後的點擊(在TargetView內)?
- 21. 有沒有辦法在引導時禁用日期datetimepicker 3
- 22. 有沒有辦法在Github的特定分支上禁用rebasing?
- 23. 有沒有辦法在FullCalendar上禁用緩存?
- 24. 有沒有辦法從卸載程序文件中禁用autouninstaller?
- 25. 有沒有辦法只刪除xcode中禁用的斷點?
- 26. 有沒有辦法在Rails路線中禁止路徑?
- 27. 有沒有辦法在NetBeans
- 28. 有沒有辦法在Notepad ++
- 29. 有沒有辦法在UIWebview
- 30. 有沒有辦法禁用mockito錄製調用
我認爲這是一個解決辦法,而不是推薦的解決方案,但因爲我有非常類似地實現它(使用@AdditionalCriteria(「this.deleted =:SOFTDELETED」)),我接受這個答案。 @James,是的,有一些關於在Eclipselink開發wiki上實現本地級支持的討論(http://wiki.eclipse.org/Talk:EclipseLink/Development/AdditionalCriteria)。 – Kalle 2013-04-16 04:00:39
謝謝Kristof和Kalle。兩種解決方案都適用於PostgreSQL,但是:disableDeletedFeature = 1不適用於我們的H2單元測試。所以我用@AdditionalCriteria(「this.blocked =:disableDeletedFeature或this.blocked = false」) – 2017-11-30 11:53:13