2017-05-28 60 views
1

我在尋找如何將下面的查詢(SQL)查詢到JPQL;如何將SQL查詢轉換爲JPQL查詢?

SELECT * FROM equipements eq 
LEFT JOIN check_lists checks 
ON eq.id_equipements = checks.equipements_id 
LEFT JOIN responses_check_lists resp 
ON checks.id_check_lists = resp.check_lists_id 
AND resp.missions_id = 15 
AND eq.id_equipements = 1 
ORDER BY checks.id_check_lists 

我跟着在互聯網上的文件,但我沒有得到我的查詢在JPQL正確的轉換。

我知道,查詢的屬性將由類的屬性所取代。

我張貼在這裏幫助我在改造SQL查詢。

EDIT1:

@Query(
      "SELECT r, checks, eq" 
      + " FROM Equipements eq" 
      + " LEFT JOIN CheckLists checks " 
      + " ON eq.idEquipements = checks.equipements.idEquipements" 
      + " LEFT JOIN ResponsesCheckLists r" 
      + " ON checks.idCheckLists = r.CheckLts.idCheckLists" 
      + " AND r.Respmission.idMission= :idmiss " 
      + " AND eq.idEquipements= :idEqp" 
      + " ORDER BY checks.idCheckLists ASC" 
     ) 

EDIT1的錯誤:

引起:java.lang.IllegalStateException:對於節點沒有任何數據類型: org.hibernate.hql.internal .ast.tree.IdentNode + - [IDENT] IdentNode: 'r'{originalText = r}

org.hibernate.hql.internal.ast.InvalidPathException:無效的路徑: 'checks.idCheckLists'

謝謝你在前進,

+0

請,如何從SQL改造JPQL? – Michael1

+0

你能告訴你的映射實體設備公司,ResponsesCheckLists等的代碼? – Dherik

回答

0

分析你的SQL,並沒有看到實體,您可以JPQL的東西像這樣:

SELECT eq FROM Equipements eq 
LEFT JOIN eq.checks check 
LEFT JOIN check.responses resp 
LEFT JOIN resp.missions mission WITH mission.id = :idmiss 
WHERE eq.id = :idEqp 
ORDER BY check.id 

但是,就像這樣,你需要調整你的實體(實體名稱,列名等)的映射。

+0

非常感謝,它在@Dherik工作 – Michael1