Hibernate how to ignore @Where annotation

hibernate, java

Solution

There is a dynamic version of the `@Where` setting, it is the `@Filter`. See:

- 19.1. Hibernate filters

Hibernate has the ability to pre-define filter criteria and attach those filters at both a class level and a collection level. A filter criteria allows you to define a restriction clause similar to the existing `"where"` attribute available on the class and various collection elements.

Management of @Filter is a bit more complex, in a nutshell:

- `<filter-def>` / `@FilterDef` is needed to define filter

- `<filter>` / `@Filter` must be assigned to class or a set

- filter must be enabled on a session level, e.g.: `session.enableFilter("myFilter").setParameter("myFilterParam", "some-value");`

So, this, while being a bit more complex, provides exactly what we need: dynamic `@Where` to be turned on/off in run-time

Problem

I have an entity: ``` @Entity @Table(name = "[Usermaster]") @Where(clause = "isDeleted = 0") public class User { //... } ``` in some flow I need to ignore @Where annotation and get user even if isDeleted is not 0. How can I make it? (I use CRUD repositories to query)

Original source

Related problems