我正在使用@ org.springframework.data.jpa.repository.Query注释进行sql查询,如下所示;
@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的blob中搜索<PERSON><NAME>?1</NAME></PERSON>
,并返回匹配ITEM的ID。
?1应该自动替换为String name,但它不起作用。我几乎可以肯定这是因为'<PERSON><NAME>?1</NAME></PERSON>'
周围的引号(&#39;)。但是,我无法弄清楚如何做到这一点。 这里的语法是什么?
答案 0 :(得分:0)
您应该将?1
替换为{0}
答案 1 :(得分:0)
我已将'<PERSON><NAME>?1</NAME></PERSON>'
更改为'<VERMITTLER><VTNR>' || ?1 || '</VTNR></VERMITTLER>'
,但它正在运作。
请注意||
是Oracle的串联运算符。因此,此解决方案仅适用于Oracle。这个想法很简单,?1不应该在引号内。