2017-05-28 17 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: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" 
     ) 

エラー: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

マップされたエンティティEquipements、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

関連する問題