2017-03-08 47 views
0

我正在使用@ org.springframework.data.jpa.repository.Query註釋爲sql查詢,如下所示;使用帶@Query註釋的?1的參數替換

@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); 

此查詢搜索<PERSON><NAME>?1</NAME></PERSON>稱爲ITEM_HISTORY和斑點內返回匹配項的ID。

?1應自動替換爲字符串名稱,但它不起作用。我幾乎可以肯定,這是因爲'<PERSON><NAME>?1</NAME></PERSON>'附近的引號(')。但我無法弄清楚如何去做。 這裏的正確語法是什麼?

+0

%?1而不是?1不起作用 –

回答

0

我已經改變了'<PERSON><NAME>?1</NAME></PERSON>''<VERMITTLER><VTNR>' || ?1 || '</VTNR></VERMITTLER>'取代?1,它是工作。

請注意||是Oracle的連接運算符。因此,這種解決方案只適用於Oracle。這個想法很簡單,但不應該在引號內。

0

你應該{0}

+0

我找不到{0}的任何用法來獲取第一個參數。 @Query(「從用戶u中選擇u u.emailAddress =?1」)這是標準用法 –