I was doing a repository class in Spring Boot like this
public interface ordini_lista_prodottiRepository extends JpaRepository<ordini_lista_prodotti, String> {
//SQL
@SQLInsert(sql = "INSERT into ordini_lista_prodotti (lista_ordini_idord, lista_prodotti_codprod, prototype)\n" +
"SELECT :idord, :codprod\n" +
"FROM ordini_lista_prodotti \n" +
"WHERE lista_ordini_idord = :idord AND lista_prodotti_codprod = :codprod\n" +
"on conflict (lista_ordini_idord, lista_prodotti_codprod) DO UPDATE" +
"SET prototype = :prototype;")
List<ordini_lista_prodotti> prototype(@Param("idord") String idord, @Param("codprod") String codprod, @Param("prototype") String prototype, Pageable pageable);
}
I receive this error:
java.lang.IllegalArgumentException: At least 2 parameter(s) provided but only 1 parameter(s) present in query
I must achieve a kind of method like this, and I don't know what to do.
This kind of solutions give me the same error
public interface ordini_lista_prodottiRepository extends JpaRepository<ordini_lista_prodotti, String> {
//SQL
@SQLInsert(sql = "INSERT into ordiniListaProdotti (listaOrdiniIdord, listaProdottiCodprod, prototype)\n" +
"SELECT :idord, :codprod, prototype\n" +
"FROM ordiniListaProdotti \n" +
"WHERE listaOrdiniIdord = :idord AND listaProdottiCodprod = :codprod\n" +
"on conflict (listaOrdiniIdord, listaProdottiCodprod) DO UPDATE" +
"SET prototype = :prototype;")
List<ordini_lista_prodotti> prototype(@Param("idord") String idord, @Param("codprod") String codprod, @Param("prototype") String prototype, Pageable pageable);
}
public interface ordini_lista_prodottiRepository extends JpaRepository<ordini_lista_prodotti, String> {
//SQL
@SQLInsert(sql = "INSERT into ordiniListaProdotti (listaOrdiniIdord, listaProdottiCodprod, prototype) " +
"SELECT :idord, :codprod, prototype " +
"FROM ordiniListaProdotti " +
"WHERE listaOrdiniIdord = :idord AND listaProdottiCodprod = :codprod " +
"on conflict (listaOrdiniIdord, listaProdottiCodprod) DO UPDATE " +
"SET prototype = :prototype")
List<ordini_lista_prodotti> prototype(@Param("idord") String idord, @Param("codprod") String codprod, @Param("prototype") String prototype, Pageable pageable);
}
public interface ordini_lista_prodottiRepository extends JpaRepository<ordini_lista_prodotti, String> {
//SQL
@SQLInsert(sql = "INSERT into ordiniListaProdotti (listaOrdiniIdord, listaProdottiCodprod, prototype) " +
"SELECT * " +
"FROM ordiniListaProdotti " +
"WHERE listaOrdiniIdord = :idord AND listaProdottiCodprod = :codprod " +
"on conflict (listaOrdiniIdord, listaProdottiCodprod) DO UPDATE " +
"SET prototype = :prototype")
List<ordini_lista_prodotti> prototype(@Param("idord") String idord, @Param("codprod") String codprod, @Param("prototype") String prototype, Pageable pageable);
}
This also doesn't work:
//SQL
@SQLUpdate(sql = "UPDATE ordini_lista_prodotti SET prototype = :prototype WHERE listaOrdiniIdord = :idord AND listaProdottiCodprod = :codprod")
List<ordini_lista_prodotti> prototype(@Param("idord") String idord, @Param("codprod") String codprod, @Param("prototype") String prototype);
SOLVED
@Repository
public interface ordini_lista_prodottiRepository extends JpaRepository<ordini_lista_prodotti, String> {
//SQL
@Query(nativeQuery = true, value = "UPDATE ordini_lista_prodotti SET prototype = :prototype WHERE lista_ordini_idord = :idord AND lista_prodotti_codprod = :codprod RETURNING *")
List<ordini_lista_prodotti> setPrototype(@Param("idord") String idord, @Param("codprod") String codprod, @Param("prototype") String prototype);
}