2016-05-31 67 views
0

我有一個查詢,如:如何在hibernate中使用標準創建內部查詢?

SELECT * 
FROM mars_india.leave_x_user 
WHERE user_id in (SELECT user_id FROM mars_india.user where vendor_id=16); 

我從計算器,但無法以下解決方案來理解:

criteria =criteria.createCriteria(user.USER_DOMAINS) 
    .add(Restrictions.eq(UserDomain.DOMAIN, domain)); 

回答

0

嗯...... 首先你要明白,你不不必使用子查詢來獲取相同的信息。

嘗試此查詢:

SELECT lxu.* FROM mars_india.leave_x_user lxu 
LEFT JOIN mars_india.user miu 
ON lxu.user_id = miu.user_id 
WHERE miu.vendor_id=16 

應該產生相同的結果作爲查詢。

JOIN聲明是神奇的。簡而言之:它讓兩個表格像一個表格一樣工作。 因此,現在您可以使用vendor_id查詢此連接表,並僅返回連接表的一部分,作爲結果記錄到「leave_x_user」表中。

請參閱,您只需要一個限制條件的查詢即可獲取相同的數據。

這就是你通過使用這個標準查詢基本上做的。

爲了學習標準查詢的語法,看看這裏: https://docs.jboss.org/hibernate/orm/3.3/reference/en/html/querycriteria.html

如果您想了解更多具體信息,請發表您的域模型(映射到表中的類)。

快樂編碼! :D

+0

謝謝你的回答.... –

相關問題