0
我有以下查詢,我需要轉換爲NHibernate的:需要轉換的是選擇多個值的NHibernate的查詢(標準或HQL)子查詢
SELECT o.*
FROM orders o
INNER JOIN
(
-- get the most recent orders based on end_date (this implies the same order can exist in the orders table more than once)
SELECT o2.order_id, MAX(o2.end_date) AS max_end_date
FROM orders o2
GROUP BY o2.order_id
) most_recent_orders
ON o.order_id=most_recent_orders.order_id
AND o.end_date=most_recent_orders.max_end_date
-- of the most recent orders, get the ones that are complete
WHERE o.is_complete=1
我知道HQL不支持加入到子查詢這就是爲什麼這不起作用。我不能使用「in」語句,因爲子查詢選擇了2個值。我試着使用建議Hibernate文檔:
http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/queryhql.html#queryhql-tuple
from Cat as cat
where not (cat.name, cat.color) in (
select cat.name, cat.color from DomesticCat cat
)
但這拋出一個錯誤,因爲SQL Server不喜歡多個值在「in」語句。
任何幫助,將不勝感激!我接受使用Criteria或Hql的解決方案。
哪裏是「order.OrderId」是從哪裏來的?我在查詢中的任何地方都沒有看到名爲「order」的別名? –
對,我忘記了。已編輯 – Firo
現在它引發異常,因爲它將「order.OrderId」作爲字符串文字處理,而不是對其進行插值。錯誤:NHibernate.QueryException:在NHibernate.Criterion.SimpleExpression類型不匹配:Id預期類型System.Guid,實際類型System.String –