J'ai ce problème: Lorsque je tente de mettre en œuvre une recherche complexe Ayende à l'adresse: http://ayende.com/Blog/archive/2006/12/07/ComplexSearchingQueryingWithNHibernate.aspx avec le graphe d'objet: Personne: M: 1 Adresse: M: 1 Rue: M: 1 Place: M: 1 Pays Je reçois l'erreur suivante: NHibernate.QueryException: Impossible d'utiliser sous-requêtes sur un critère sans projection. Je fais ceci:interrogation complexe avec NHibernate
public List<Person> Find()
{
DetachedCriteria query = DetachedCriteria.For<Person>();
AddAddressQuery(query);
return personRepository.Find(query);
}
private void AddAddressQuery(DetachedCriteria query)
{
DetachedCriteria addressQuery = null;
if (!String.IsNullOrEmpty(SearchParams.HouseNumer))
{
addresaQuery = DetachedCriteria.For<Address>();
addresaQuery.Add(Restrictions.Eq("HouseNumer",
SearchParams.HouseNumer));
}
this.AddStreetQuery(ref addressQuery);
if (addressQuery != null)
{
query.CreateCriteria("Address1",
"address1").Add(Subqueries.Exists(addressQuery));
}
}
private void AddStreetQuery(ref DetachedCriteria query)
{
DetachedCriteria streetQuery = null;
if (this.SearchParams.StreetId.HasValue)
{
streetQuery = DetachedCriteria.For<Street>();
streetQuery .Add(Restrictions.Eq("Id",
this.SearchParams.StreetId.Value));
}
if (streetQuery != null)
{
query = query ?? Query.CreateCriteria("Address1");
query.CreateCriteria("Street",
"street").Add(Subqueries.Exists(streetQuery));
}
}
Qu'est-ce que je fais mal? S'il vous plaît aider
Existe-t-il un moyen de voir le SQL généré à partir des critères sans exécuter les critères? – Luka
@Luka haha, j'ai posé la même question un peu plus tôt aujourd'hui :) http://stackoverflow.com/questions/3562839/nhibernate-retrieve-sql-to-be-executed-as-a-string Je ne pense pas . – cbp
lol, je sais que c'est possible avec des intercepteurs mais je ne veux pas exécuter les critères. – Luka