如何将 SQL 查询转换为 JPQL 查询?

How to transform SQL query into JPQL query?

我正在寻找如何将以下查询 (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

我遵循了 Internet 上的文档,但我没有在 JPQL 中正确转换我的查询。

我知道查询的属性会被class的属性替换。

我发帖是为了帮助我转换 SQL 查询。

编辑 1:

@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 错误:

Caused by: java.lang.IllegalStateException: No data type for node: org.hibernate.hql.internal.ast.tree.IdentNode +-[IDENT] IdentNode: 'r' {originalText=r}

org.hibernate.hql.internal.ast.InvalidPathException: Invalid path: 'checks.idCheckLists'

提前谢谢你,

分析您的 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

但是,要做到这一点,您需要调整实体的映射(实体名称、列名称等)。