在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