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!
java spring boot jpa jpql nativequery stored procedure
Commentami!