Легко использовать @AdditionalCriteria в EclipseLink, например, чтобы отфильтровать мягкие удаленные объекты, но есть ли способ временно отключить его до выполнения конкретного запроса?Есть ли способ отключить @AdditionalCriteria в EclipseLink?
ответ
Да, это возможно, с простым обходным решением. Я уточнил @AdditionalCriteria аннотацию вроде этого:
@AdditionalCriteria(":disableDeletedFeature = 1 or this.isDeleted = false")
и указано значение свойства по умолчанию для отключения флага в persistence.xml:
<property name="disableDeletedFeature" value="0"/>
так по фильтрации по умолчанию включена, но вы можете отключить его легко на уровне EntityManager:
entityManager.setProperty("disableDeletedFeature", 1);
Все работает отлично, надеюсь, что это поможет!
Если вы используете собственный SQL-запрос, критерии не будут добавлены.
В противном случае нет простого способа отключить его добавление, если только вы не создадите другую единицу сохранения или другой класс без дополнительных критериев.
Одна вещь, которую вы можете сделать, это установить условие ИЛИ в критерии, основанное на свойстве сеанса, тогда, когда вы установите для этого свойства значение true, вы можете отключить критерии.
Вы можете зарегистрировать запрос на повышение, чтобы добавить параметр, чтобы не добавлять его в запрос.
Я использую eclipselink 2.4.1. Он работает только с КАВЫЧКОЙ для стоимости имущества:
@AdditionalCriteria(":disableDeletedFeature = '1' or this.isDeleted = false")
и здесь:
entityManager.setProperty("disableDeletedFeature", '1');
- 1. EclipseLink @AdditionalCriteria не работает с поиском
- 2. Есть ли способ отключить WKInterfaceMenu?
- 3. Есть ли способ отключить dojox.mobile.switch?
- 4. Есть ли способ отключить AMDPlugin?
- 5. Есть ли способ отключить среду в RStudio?
- 6. Есть ли способ отключить intellisense в Workbench?
- 7. Есть ли способ отключить функцию в jQuery?
- 8. Есть ли способ отключить вкладки в ActionBarSherlock .......?
- 9. @AdditionalCriteria в сочетании с @OneToOne дает QueryException
- 10. Есть ли способ обновить первичный ключ через EclipseLink?
- 11. Отключить кэширование в JPA (eclipselink)
- 12. Есть ли способ отключить сообщения от zookeeper?
- 13. Есть ли способ отключить все стили CSS?
- 14. есть ли способ отключить ограничения symfony2/doctrine?
- 15. Есть ли способ отключить кеширование страницы FitNesse?
- 16. Есть ли способ отключить область видимости var?
- 17. Есть ли лучший способ отключить флажок?
- 18. Есть ли способ отключить прокрутку (инерцию)?
- 19. Есть ли способ отключить вывод stdout org.junit.runner.JUnitCore?
- 20. Есть ли способ отключить запись hsqldb?
- 21. Есть ли способ отключить анимацию анимации ActionBar?
- 22. Есть ли способ отключить разрешение конфликта git?
- 23. Есть ли способ полностью отключить AlertDialog?
- 24. Есть ли способ отключить «расстыковку» клавиатуры?
- 25. Есть ли способ отключить рынок Android?
- 26. Есть ли способ отключить оптимизационную блокировку Hibernate?
- 27. Есть ли способ отключить поддержку диктовки UITextField?
- 28. Android: Есть ли способ отключить комплектацию уведомлений?
- 29. Есть ли способ отключить предупреждения xml?
- 30. Есть ли способ отключить действие клавиши вкладок?
Я вижу это как обходной путь, а не рекомендованное решение, но так как я осуществил это очень похоже (с использованием @AdditionalCriteria ("this.deleted =: SOFTDELETED")), я принимаю этот ответ. @James, да, есть некоторые разговоры о внедрении поддержки его на уровне в вики-разработке Eclipselink (http://wiki.eclipse.org/Talk:EclipseLink/Development/AdditionalCriteria). – Kalle
Спасибо Кристоф и Калле. Оба решения работают для меня на PostgreSQL, но: disableDeletedFeature = 1 не работает для наших модульных тестов с H2. Поэтому я использовал @AdditionalCriteria («this.blocked =: disableDeletedFeature ИЛИ this.blocked = false») –