Domain models and metadata - Filtering data - Dynamic-data filters

3 belangrijke vragen over Domain models and metadata - Filtering data - Dynamic-data filters

Hoe passen we een dynamische filter toe op een entiteit ?

@Entity
@org.hibernate.annotations.Filter(
name = "limitByUserRanking",
condition = """
:currentUserRanking >= (
select u.RANKING from USERS u
where u.ID = SELLER_ID
)"""
)

public class Item {
We kunnen meerdere filters toepassen door ze te groeperen in een @org.hibernate.annotations.Filters.

Hoe schakelen we een dynamische filter in ?

Het moet worden ingeschakeld en geparametriseerd in de applicatie voor
een specifieke eenheid van werk, met behulp van de Session API.
org.hibernate.Filter filter = em.unwrap(Session.class)
.enableFilter("limitByUserRanking");
filter.setParameter("currentUserRanking", 0);

Andere nuttige methoden van Filter ?

Andere handige methoden van de Filter zijn getFilterDefinition(), waarmee we door de parameter namen en types kunnen itereren, en validate(), die een HibernateException gooit als we vergeten een parameter in te stellen. We kunnen ook een lijst van argumenten instellen met setParameterList(); dit is vooral handig als onze SQL-restrictie een expressie bevat met een kwantor-operator (bijvoorbeeld de IN-operator).

De vragen op deze pagina komen uit de samenvatting van het volgende studiemateriaal:

  • Een unieke studie- en oefentool
  • Nooit meer iets twee keer studeren
  • Haal de cijfers waar je op hoopt
  • 100% zeker alles onthouden
Onthoud sneller, leer beter. Wetenschappelijk bewezen.
Trustpilot-logo