我有这段代码:
@Query(nativeQuery = true, value = "select r.id, numero_registro,data_registro as dt_registro ,nr_pasta_pj as pasta, n.nome, value as objetos, (select cast ('{\"nome\" : \"' || ip.nome ||'\", \"documento\": \"' || cpf_cnpj || '\", \"qualidade\": \"'|| q.nome || '\"}' as jsonb) from indicador_pessoal ip JOIN qualidade q ON ip.qualidade_id = q.id WHERE registro_id = r.id limit 1) as parte FROM registro r cross join lateral jsonb_array_elements(objetos) JOIN natureza n ON r.natureza_id = n.id where value @> '{id: ?1 , \"atributos\": [{\"nome\": \"?2\", \"valor\" : \"?3\"}]}'")
List<IndicadorPessoalVO> findByObjeto ( Long id, String nome, String valor);
当我运行此代码时抛出错误:
引起:java.lang.IllegalArgumentException:带有该参数的参数 位置[1]不存在
如果删除参数并更改为文本可以正常工作。
@Query(nativeQuery = true, value = "select r.id, numero_registro,data_registro as dt_registro ,nr_pasta_pj as pasta, n.nome, value as objetos, (select cast ('{\"nome\" : \"' || ip.nome ||'\", \"documento\": \"' || cpf_cnpj || '\", \"qualidade\": \"'|| q.nome || '\"}' as jsonb) from indicador_pessoal ip JOIN qualidade q ON ip.qualidade_id = q.id WHERE registro_id = r.id limit 1) as parte FROM registro r cross join lateral jsonb_array_elements(objetos) JOIN natureza n ON r.natureza_id = n.id where value @> '{id: 1 , \"atributos\": [{\"nome\": \"nome\", \"valor\" : \"valor\"}]}'")
List<IndicadorPessoalVO> findByObjeto ( );
答案 0 :(得分:0)
试试这个
List<IndicadorPessoalVO> findByObjeto (@Param("id") Long id,@Param("nome")String nome, @Param("valor ")String valor);