abaixo as classes
Classe Pedido
package br.com.alura.springmvc.model;
import java.math.BigDecimal;
import java.time.LocalDate;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
@Entity
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
public class Pedido {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String nomeProduto;
private BigDecimal valorNegociado;
private LocalDate dataDaEntrega;
private String urlProduto;
private String urlImagem;
private String descricao;
@Enumerated(EnumType.STRING)
private StatusPedido status;
@ManyToOne(fetch = FetchType.LAZY)
private User user;
public String getNomeProduto() {
return nomeProduto;
}
public void setNomeProduto(String nomeProduto) {
this.nomeProduto = nomeProduto;
}
public BigDecimal getValorNegociado() {
return valorNegociado;
}
public void setValorNegociado(BigDecimal valorNegociado) {
this.valorNegociado = valorNegociado;
}
public LocalDate getDataDaEntrega() {
return dataDaEntrega;
}
public void setDataDaEntrega(LocalDate dataDaEntrega) {
this.dataDaEntrega = dataDaEntrega;
}
public String getUrlProduto() {
return urlProduto;
}
public void setUrlProduto(String urlProduto) {
this.urlProduto = urlProduto;
}
public String getUrlImagem() {
return urlImagem;
}
public void setUrlImagem(String urlImagem) {
this.urlImagem = urlImagem;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public StatusPedido getStatus() {
return status;
}
public void setStatus(StatusPedido status) {
this.status = status;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
Classe User
package br.com.alura.springmvc.model;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
@Entity
@Table(name="users")
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
public class User {
@Id
private String username;
private String password;
private Boolean enabled;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "user", fetch = FetchType.LAZY)
private List<Pedido> pedidos;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Boolean getEnabled() {
return enabled;
}
public void setEnabled(Boolean enabled) {
this.enabled = enabled;
}
}
Classe PedidosRest
package br.com.alura.springmvc.api;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import br.com.alura.springmvc.model.Pedido;
import br.com.alura.springmvc.model.StatusPedido;
import br.com.alura.springmvc.repository.PedidoRepository;
@RestController
@RequestMapping("/api/pedidos")
public class PedidosRest {
@Autowired
private PedidoRepository pedidoRepository;
@GetMapping("aguardando")
public List<Pedido> getPedidosAguardandoOfertas() {
// ordenando por ordem descentede Spring Data JPA
Sort sort = Sort.by("id").descending();
PageRequest paginacao = PageRequest.of(0, 10, sort); // mostra desde a primeira pagina com 1 item por pagina
// (este item por pagina pode ser customizado de acordo
// com a necessidade)
return pedidoRepository.findByStatus(StatusPedido.AGUARDANDO, paginacao);
}
}