Hibernate how to ignore @Where annotation

前端 未结 2 1537
天命终不由人
天命终不由人 2020-12-21 17:59

I have an entity:

@Entity
@Table(name = \"[Usermaster]\")
@Where(clause = \"isDeleted = 0\")
public class User {
//...
}

in some flow I nee

相关标签:
2条回答
  • 2020-12-21 18:34

    Old question, but the answer might be here:

    simple solution is to use native SQL:

    lst = sessionFactory.getCurrentSession().
    createSQLQuery("select {entb.*}  from EntityB entb where  is_deleted=1")                            
           .addEntity("entb", EntityB.class)
           .list();
    
    0 讨论(0)
  • 2020-12-21 18:40

    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

    0 讨论(0)
提交回复
热议问题