Usare le Stored Procedure in Spring Boot e JPA

Mattepuffo's logo
Usare le Stored Procedure in Spring Boot e JPA

Usare le Stored Procedure in Spring Boot e JPA

In questo articolo abbiamo visto come usare delle custom query in Spring Boot e JPA.

Oggi vediamo come richiamare una Stored Procedure.

In realtà il processo è praticamente lo stesso, in quanto sempre di una query custom si tratta.

Cominciamo dal model:

package com.mp.springtest.model;

import javax.persistence.*;
import java.util.List;

@Entity
@Table(name = "utenti")
public class Utente {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;

    private String email;
    private String password;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

}

Questo il nostro repository:

package com.mp.springtest.model;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;

import java.util.List;
import java.util.Optional;

public interface UtentiRepository extends JpaRepository<Utente, Integer> {

    @Query(value = "CALL get_utenti()", nativeQuery = true)
    List<Utente> getAll();

}

Fondamentale il parametro nativeQuery a true!

Infine il controller:

package com.mp.springtest.controller;

import com.mp.springtest.model.Utente;
import com.mp.springtest.model.UtentiRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping(path = "/utenti")
public class UtentiController {

    @Autowired
    private UtentiRepository utentiRepository;

    @GetMapping(path = "/")
    public @ResponseBody
    List<Utente> getAll() {
        return utentiRepository.getAll();
    }
    
}

Enjoy!


Condividi

Commentami!