ネイティブ問合せ
@oracle.spring.data.nosql.repository.Query
注釈を使用してネイティブSQL問合せを実行する方法について学習します。
@oracle.spring.data.nosql.repository.Query
注釈を使用すると、ネイティブSQL問合せを実行できます。
public interface AuthorRepository extends NoSQLRepository<Author, Long> {
@Query(value = "DECLARE $firstName STRING;
SELECT * FROM author WHERE first_name = $firstName")
List<Author> findAuthorsByFirstName(@Param("$firstName") String firstName);
@Query("DECLARE $firstName STRING; $last STRING; " +
"SELECT * FROM Customer AS c " +
"WHERE c.kv_json_.firstName = $firstName AND " +
"c.kv_json_.lastName = $last")
List<Customer> findCustomersWithLastAndFirstNosqlValues(
@Param("$last") StringValue paramLast,
@Param("$firstName") StringValue firstName
);
}
パラメータは、@org.springframework.data.repository.query.Param
注釈を使用することで名前と一致します。@Param
注釈値フィールドは、宣言されたバインド変数の名前である'$'文字を含めて、正確に一致する必要があります。@Param
注釈を使用していないと、例外がスローされます。すべてのパラメータは、「永続性モデル」の項で説明しているマッピング・ルールに従ってマップされます。
ノート:
2番目のメソッドfindAuthorsWithLastAndFirstNosqlValues
は、oracle.nosql.driver.values.StringValue
と連動します。問合せパラメータでは、すべてのFieldValue
サブクラスがサポートされます。FieldValue
は、NoSQL SDK for Javaのすべてのデータ項目のベース・クラスです。各データ項目は、FieldValue
のインスタンスであり、その型と値にアクセスできます。また、FieldValue
を操作する追加のユーティリティ・メソッドにもアクセスをできます。それに加えて、FieldValue
型のパラメータもサポートされます。FieldValue
の詳細は、FieldValueを参照してください。
Oracle NoSQL Databaseにおけるすべての問合せサポートの詳細は、SQLリファレンス・ガイドを参照してください。