2014-03-29 46 views
0

是否有人可以告訴我怎麼這個SQL查詢轉換到休眠?如何轉換這個SQL查詢進入休眠

SELECT * FROM sys_quote_master AS g1 
INNER JOIN 
    (SELECT order_base_id, order_id FROM sys_quote_master 
    GROUP BY order_base_id, order_date_last_revised 
    ORDER BY order_date_last_revised desc) AS g2 
ON g2.order_id = g1.order_id; 

基本上,

我已經嘗試這樣做,這是行不通的:

DetachedCriteria crit1 = DetachedCriteria.forClass(QuoteMaster.class); 
ProjectionList pList = Projections.projectionList(); 
pList.add(Projections.groupProperty("orderBaseId")); 
session = HibernateSessionFactory.currentSession(); 
Criteria crit = session.createCriteria(QuoteMaster.class); 
Criteria c = crit.createCriteria("QuoteMaster", CriteriaSpecification.INNER_JOIN); 
c.setProjection(pList); 

我得到這個錯誤:

org.hibernate.QueryException:無法解析屬性:這一點: QuoteMaster

而且我認爲它必須做這行代碼是我想創建一個內連接到同一個表:

Criteria c = crit.createCriteria("QuoteMaster", CriteriaSpecification.INNER_JOIN); 

所以基本上,我的問題是「如何創建一個連接到相同的表使用Criteria.createCriteria或Criteria.createAlias?' Criteria類的文檔聲明第一個參數是一個點分隔的屬性路徑,但是這意味着什麼? :)

每一個例子,我發現迄今展示瞭如何用2個或3個表格,但不相同的表做到這一點,我不知道該怎麼使用的第一個參數。

+1

你嘗試過什麼?描述您的需求並要求某人爲您編寫代碼或解釋如何編寫代碼的問題與Stack Overflow無關。請確定有關編程的特定問題或問題。包括嘗試解決方案,解釋結果與預期結果的差異以及您收到的任何錯誤消息。請閱讀[關於](http://stackoverflow.com/about)頁面和[關於提出良好問題的建議](http://stackoverflow.com/help/how-to-ask)。 –

+0

你好,我更新了原始文章與更多的信息。 – jrobertsz66

+0

這是跨越式的更好。我正在收回我的近距離投票並加註。順便說一句,反引號是用於內聯代碼跨度的(在描述性文本中)。分隔線上的代碼應放在代碼塊中(縮進4或突出顯示並單擊th符號)。塊引用適用於錯誤消息(在行的開頭添加'>') –

回答

0

我不知道你的實體如何,這應該給粗略的想法。

from SystQuoteMasterEntity sqm join (select sqm1.orderbaseid, sqm1.orderId from SystQuoteMasterEntity sqm1 group by orderbaseid,orderdatelastrev order by orderdatelast desc) g2 
+0

請參閱我的更新最初的問題 - 我沒有一大堆的休眠的經驗,所以我問我的問題的原因,因爲我想學習正確的方式做到這一點,似乎無法找到任何很好的例子 – jrobertsz66

+0

感謝。宙斯,但不是隻是SQL了嗎?基本上,我正在嘗試使用標準來做到這一點。這是可能的嗎?如果是這樣,你怎麼做? – jrobertsz66