Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
798 views
in Technique[技术] by (71.8m points)

java - Hibernate how to ignore @Where annotation

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)

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

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

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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...