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)