2012-03-28 72 views
4

我需要一個JPQL的MySQL查詢:哪能內加入一個子查詢中JPQL

SELECT * 
FROM table1 t1 
INNER JOIN table2 t2 
    ON t1.id = t2.table1.id 
INNER JOIN (SELECT * FROM table1 t3 
      INNER JOIN table2 t4 ON t3.id = t4.table1.id 
      WHERE t3.name = 'xxx') subTable 
    ON t1.number = subTable.number 
WHERE t1.number = '5' 
    AND id = '3' 
+0

沒有關於實體結構的任何信息,很難說出必要的JPQL查詢。 – magomi 2012-03-28 12:03:31

+0

table1和table2之間的關係是table2有一個table1的id字段。然後,對於table1,table2屬於其他表(通常爲table3),這裏我們不需要考慮table3,因爲我們在這兩個表本身的列內部連接table1和table2 – Prince 2012-03-28 12:44:03

+0

我不是在談論數據庫的結構。爲了說明JPQL查詢,我需要知道您的實體對象是如何設計的,以及如何實現這些實體之間的映射。 – magomi 2012-03-28 12:50:57

回答

2

您的查詢看起來很病態的,或者說是什麼導致你想查詢的,包括你的對象模型。

通常,JPQL不支持from子句中的子選擇,因此您的查詢不能直接轉換爲JPQL。

您可以隨時將其作爲JPA本機SQL查詢執行,因爲您似乎比JPQL更適合使用SQL。