2017-03-08 16 views
0

次のように、@ org.springframework.data.jpa.repository.Queryアノテーションを使用しています。@ 1を@Queryアノテーションで使用して引数を置換する

@Query(nativeQuery = true, value = "select ITEM_ID from db.ITEMS " 
    + "where dbms_lob.instr(ITEM_HISTORY, utl_raw.cast_to_raw('<PERSON><NAME>?1</NAME></PERSON>'), 1, 1) > 0") 
List<String> findByName(String name); 

このクエリは、ITEM_HISTORYと呼ばれるブロブ内<PERSON><NAME>?1</NAME></PERSON>を検索し、一致するアイテムのIDを返します。

?1は自動的に文字列名に置き換える必要がありますが、動作しません。 の前後に引用符( ')が付いていることがほぼ確実です。しかし、私はそれを行う方法を理解できませんでした。 ここで正しい構文は何ですか?

+0

?1の代わりに?1が機能しない –

答えて

0

?1を置き換える必要があります。

||は、Oracleの連結演算子です。したがって、このソリューションはOracle上でのみ動作します。アイデアは簡単ですが、?1は引用符で囲まれてはいけません。

0

あなたは、私が'<VERMITTLER><VTNR>' || ?1 || '</VTNR></VERMITTLER>''<PERSON><NAME>?1</NAME></PERSON>'を変更して、それが働いている{0}

+0

最初の引数を得るために{0}の使用方法が見つかりませんでした。 @Query( "ユーザーuからuを選択u.emailAddress =?1")これは標準的な使用法です –

関連する問題