2009-10-15 4 views
0

J'ai eu un problème, j'ai besoin de traduire cette requête SQL en critères, mais je vais avoir quelques problèmes, tout le monde peut donner un coup de main?NHibernate + Criterias + DetachedCriteria

SELECT * FROM Ref INNER JOIN Prod produit sur Ref.id = Prod.id_referencia ET Prod.ProdDtAlteracao = (SELECT MAX (Prod2.ProdDtAlteracao) DE Prod2 produit Où Prod.ProdCod = Prod2.ProdCod)

Répondre

0
en supposant

Ref possède une propriété sac/liste appelée « produits » qui cartes de produit ...

session.CreateCriteria<Ref>("r") 
    .CreateAlias("products", "p", InnerJoin) 
    .Add(Subqueries.PropertyEq("p.ProdDtAlteracao", DetachedCriteria.For<Product>("p2") 
     .SetProjection(Projections.Max("p2.ProdDtAlteracao")) 
     .Add(Restrictions.EqProperty("p.ProdCod", "p2.ProdCod")))) 
    .List<Ref>(); 

requête ressemblerait

SELECT ... 
    FROM Ref 
    INNER JOIN Product Prod on Ref.id = Prod.id_referencia 
    WHERE Prod.ProdDtAlteracao = (
      SELECT MAX(Prod2.ProdDtAlteracao) 
      FROM Product Prod2 
      WHERE Prod.ProdCod = Prod2.ProdCod 
     ) 
Questions connexes