2009-12-15 2 views
1

J'ai actuellement une entité qui a une clause where définie sur elle. Je veux mettre cette clause where sur un filtre et l'activer par défaut (pour ne pas casser les fonctionnalités existantes).Comment activer un filtre d'hibernation pour une entité particulière par défaut?

Je veux le transformer en un filtre afin que je puisse le désactiver parce que j'ai un cas d'utilisation dans lequel j'ai besoin désactivé.

Comment puis-je faire cela en Hibernate 3.1.3?

Répondre

6

La documentation d'Hibernate semble indiquer que les filtres (semblables à une vue SQL) sont des moyens optionnels de visualiser vos données et ne représentent pas la façon «par défaut» de les regarder. Ma recommandation serait de s'en tenir à la clause where que vous avez et d'écrire une routine d'accesseur spéciale pour le cas d'utilisation où vous ne voulez pas de données filtrées. Je suppose qu'une autre alternative pour réaliser ce que vous demandez serait d'encapsuler l'activation de votre filtre dans votre classe "HibernateUtil" (en supposant que vous avez une telle bête qui est responsable de l'ouverture de nouvelles sessions pour votre code à utiliser) . Par défaut, votre méthode pour obtenir une nouvelle session instancie la session, puis active le filtre avant de retourner. Quelque chose comme ceci:

public Session newSession(){ 
    Session session = sessionFactory.openSession(); 
    // this assumes you don't have criteria to set depending on the context 
    session.enableFilter("yourFilter"); 
    return session; 
} 

Ensuite, dans votre cas d'utilisation spécifique que vous pourriez disableFilter("yourFilter");.

Questions connexes