如何将 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
但是,要做到这一点,您需要调整实体的映射(实体名称、列名称等)。
我正在寻找如何将以下查询 (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
但是,要做到这一点,您需要调整实体的映射(实体名称、列名称等)。