2016-04-05 25 views
1

私は私の@Repositoryに問題がある:春データJPA @query注釈、真nativeQuery =、

@Repository 
public interface RekvZmRepository extends CrudRepository<RekvalZamestn, RekvalZamestnPk> { 
@Query(value = "SELECT z.* FROM rek_zm d INNER JOIN proj_a a ON d.id = a.prj_idcislo" 
    + "         INNER JOIN proj_e e ON a.id = e.id" 
    + "         INNER JOIN rekv_z z ON d.id = z.id" 
    + "WHERE d.id = ?1 AND a.id = ?2 AND e.id = ?3", nativeQuery = true) 
public List<RekvalZamestn> getRekvOsOnDoh(Long dhzmrk, Long prj, Long prje); 
} 

私はそれを実行すると、結果は次のとおりです。

org.springframework.dao.InvalidDataAccessResourceUsageException: could not 
extract ResultSet; SQL [n/a]; nested exception is 
org.hibernate.exception.SQLGrammarException: could not extract ResultSet 

私はSQLを実行すると、それは動作しますが、だから私のためには、問題はSQLではなく私の@Queryであるように見えます。

答えて

3

は、それを

SELECT z.* FROM rek_zm d INNER JOIN proj_a a ON d.id = a.prj_idcislo INNER JOIN proj_e e ON a.id = e.id INNER JOIN rekv_z z ON d.id = z.idWHERE d.id = ?1 AND a.id = ?2 AND e.id = ?3 

に相当しますWHERE句の前に空白がないことが明らかになります。

+0

はい、それは、ああ私の目です。ありがとう。 – 1ac0

0

変更SELECT z.* FROM~SELECT z FROMRekvalZamestnとすると、テーブルrekv_zにマップされます。あなたはこのように1行ですべての文字列を連結した場合あなたは、クエリ、1行の形式で(スペース、ERMの理由のために1つの空間に複数のスペースを凝縮)

+0

はい、 'RekvalZamestn'は' rekv_z'テーブルにマッピングされますが、ネイティブクエリです。 'z。* 'だけを' z'に変更すると動作しません(現在テスト済みです)。 – 1ac0