2016-08-29 12 views
0

に参加中のエラー:JPA:私はここでエラーを取得する3つのテーブル

@Query("SELECT p.id," 
+ " p.data," 
+ " p.protocolo," 
+ " p.status," 
+ " d.nome," 
+ " u.nome" 
+ " FROM Protocolo p" 
+ " INNER JOIN Documento d ON " 
+ " p.documento_id = d.id " 
+ " INNER JOIN Usuario u ON " 
+ " p.academico_id = u.id)") 
public List<Protocolo> findByProtocolosJoin();  

ここでは、ログファイルへのリンクです: Log file

+0

'documento'または' nome'フィールドを含むテーブルのテーブル構造を表示していますが、それはSQLとの間違いでしょうか?あなたのリンクで無効なパスが表示されます:jpaがドキュメントのパスにアクセスしようとしていますが、できないような「d.nome」。また、あなたの@queryの結果をソースコードの代わりに貼り付けて貼り付けてください。簡単にデバッグできます。 – xQbert

答えて

0

JPQLあなたはJOIN間の関係することができます。別のルートにJOINしようとしているようです。これは標準JPQLには含まれていませんが、使用しているバージョンのJPAプロバイダ(DataNucleusなど)で許可されている可能性があります(Hibernate)。 JPQLチュートリアルではhow to join across relationsと表示されます。投稿するエンティティ(そのような参加はベースになると思われる)、つまりすべてのことが言えることです。

0

JOIN演算子を使用する内部結合の構文は、[INNER] JOIN [AS]です。

は、次の問合せを考えてみましょう:従業員のEからP を選択 登録しようe.phones P

この問合せは、電話関係全体で電話エンティティにEmployeeエンティティに参加するために、JOIN演算子を使用しています。 このクエリの結合条件は、電話関係のオブジェクト・リレーショナル・マッピングによって定義されます。

JPQL要求のSQLと等価である:

SELECT p.id、p.phone_num、p.type、EMP Eからp.emp_id 、電話P e.id = p.emp_id

このリクエストをお試しください:

SELECT p.id、p.data、p.protocolo、p.status、d.nome、u.nome Protocolo Pからp.Documentoはp.Documento.UsuarioのJOIN dは、JOIN u

結果と幸運

+0

ニュースはありますか?あなたの問題を解決しますか? –

関連する問題