2009-07-23 8 views
3

Je cherche un critère NHibernate qui n'ajoute pas de restriction à un critère. La raison en est que j'ai une méthode qui convertit certains paramètres d'entrée en un critère qui est ajouté à un critère. Il y a une constellation de paramètres d'entrée où aucune restriction ne doit être appliquée. Par conséquent, je veux retourner une sorte de critère fictif.Existe-t-il un critère NHibernate qui ne fait rien?

Y a-t-il quelque chose comme ça dans NHibernate?

Cordialement,
Oliver Hanappi

+0

Aucune restriction, même Type? Renvoyez juste un objet critère vide alors! –

Répondre

0

bien que vous pourriez faire quelque chose comme Restrictions.IsNotNull (« id ») si l'interrogation à une entité avec « id » étant une clé primaire (et ne peut donc jamais être nulle). Tout ce qui évalue à aucune restriction logique peut être utilisé en fonction de vos besoins.

0

Vous pouvez ajouter des critères si nécessaire, vérifiez simplement que vos paramètres sont NULL, s'ils ne sont pas NULL, puis ajoutez les critères. Voir par exemple:

Criteria cr = session.createCriteria(Employee.class) 
cr.add(Restrictions.like("firstName", "Bob%")); 

if (par_salary.IsNotNullOrEmpty()) 
{ 
    cr.add(Restrictions.eq("salary", par_salary)); 
} 
List results = cr.list(); 

partie de cette prise de Hibernate Criteria Queries

3

Vous pouvez utiliser un vide qui est conjuction toujours vrai (il décide de "1 = 1").

par ex.

ICriterion conditionalCriteria = includeCriteria 
    ? Restrictions.Eq("someEntity.Field", variable) 
    : (ICriterion) Restrictions.Conjuction(); 

var query = Session 
    .CreateCriteria<SomeEntity>("someEntity") 
    .Add(conditionalCriteria) 
    .SetResultTransformer(Transformers.AliasToBean<SomeEntity>()) 
    .List<SomeEntity>(); 
Questions connexes