ネイティブ問合せ

@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リファレンス・ガイドを参照してください。