2017-05-28 61 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