2017-07-05 1 views
1
  • データベースをロードするために外部ファイルに問合せ(プロパティまたはyaml)を書きたいとします。 -
  • これは長いクエリであり、XXXRepositoryクラスの@Query( "long query")の中に置かれていると目に見えません。
  • このクエリを外部ファイル(properties、yaml、xml、またはjson)に書き込んで、そのファイルを@Query()でspringデータjpaで呼び出す方法はありますか?

答えて

0

名前付きクエリを使用できます。クエリは、META-INF/jpa-named-queries.propertiesというファイルに定義する必要があります。ここcorresponding repository example from spring、リポジトリに

User.findBySpringDataNamedQuery=select u from User u where u.lastname=?1 

リファレンス注釈で名前でクエリを::spring exampleを参照してください答えを

@Query(name = "User.findBySpringDataNamedQuery", countProjection = "u.firstname") 
Page<User> findByNamedQueryAndCountProjection(String firstname, Pageable page); 
+0

感謝を。私のクエリは500行で展開され、Neo4jのデータを読み込みます。そのような長いクエリを複数行のクエリスプレッドとしてどのようにプロパティファイルに組み込むことができますか?私は各行の最後に/を追加する方法があると思いますが、便利なのは500回の配置ではありません。複数の行にまたがるプロパティファイルにクエリを書くよりよい方法はありますか? –

+0

名前付きクエリを[META-INF/orm.xml](https://github.com/spring-projects/spring-data-jpa/blob/master/src/test/resources/META-INF)に定義してみてください/orm.xml)を使用します。しかし、JPAが複数行のクエリを取得するかどうかはわかりません。 –

+0

返信いただきありがとうございます。 ERROR 10384 --- [nio-8080-exec-8] oaccC [。[。[/]。[サーフェレット[dispatcherServlet]]のServlet.service()は、パス[]とのコンテキストで例外を投げた[要求処理に失敗しました。ネストされた例外はorg.springframework.dao.InvalidDataAccessResourceUsageExceptionです:Cypherを実行中にエラーが発生しました。コード:Neo.ClientError.Statement.SyntaxError;説明:無効な入力 'a':予期した 'r/R'または 'e/E'(行1、列2(オフセット:1)) "dataLoad" –

関連する問題