Как по умолчанию «фильтровать» запросы (предложение where) для объекта? - PullRequest
3 голосов
/ 09 февраля 2012

У меня есть спящий объект в моей игре!проект, который поддерживается базой данных mysql и выполняет запросы с использованием JPA.

Теперь я хочу добавить в мое приложение «архив», который удаляет эту сущность, насколько это касается пользователя.

Однако есть и другие объекты, которые будут ссылаться на него, поэтому я не могу удалить объект, а также хочу восстановить его из архива.

Однако я не хочу, чтобы он появлялсяв списках или поисках по умолчанию, но, конечно, все еще требуется возможность доступа к данным в некоторых случаях, например, когда пользователь проверяет элемент, который на него ссылается.

Существует ряд запросов, которые ссылаются на объекти я мог бы добавить предложение WHERE к каждому из них, но я также использую некоторые встроенные методы запроса, такие как findAll ().

Я думаю, было бы намного чище, если бы я мог как-то добавить оператор whereпо умолчанию.

Есть ли способ сделать это?

Ответы [ 2 ]

0 голосов
/ 17 июля 2018

У вас есть два решения здесь:

  1. Если вы используете Hibernate, вы можете использовать @Where(clause = "column to filer") в компоненте.

    @Entity @Where(clause = "isActive='false'") public class Product { //... @Column private Boolean isActive; }

  2. Или Если вы используете реализацию EclipseLink JPA, используйте @AdditionalCriteria("column to filer") для определения параметризованных представлений данных.

    @Entity @AdditionalCriteria("isActive='false'") public class Product { //... @Column private Boolean isActive; }

Для получения дополнительной информации:

0 голосов
/ 10 февраля 2012

Вы можете использовать аннотации Hibernate @FilterDef и @Filter в вашей сущности.Смотрите документацию.http://docs.jboss.org/hibernate/orm/4.0/manual/en-US/html/filters.html

Возможно, вы также захотите создать перехватчик / ловушку для плагина JPA, который автоматически включает ваш фильтр при запуске сеанса гибернации ... но для начала фильтр @Before в вашем контроллере долженсделать трюк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...