Olá, estou desenvolvendo um projeto para controlar um restaurante com a seguinte regra de negócio:
Por se tratar de desafio simples sem autenticação e de não possuir usuários, não será necessário cadastrar o campo user_id, considere que deve ser listados todos os favoritos da API como se fossem os seus favoritos.Exemplo de rotas da API
- : Retorna todos os produtos cadastrados na API
- : Retorna um produto cadastrado na API baseado no id
- : Retorna todas as categorias cadastradas na API
- : Retorna todas os pedidos que foram cadastrados na API
- : Retorna todas as comidas favoritas que foram cadastrados na API
Meu problema é que o código está criando o banco de dados esperado, mas não está criando as tabelas. Já verifiquei o código de forma exaustiva e não sei onde estou errando.
Meu código é o seguinte:
package br.org.cesar.Challenge.Entity;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
@Entity
public class Produto {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id_Prod;
private String name;
private double preco;
private boolean favorito;
@ManyToOne
private Categoria categoria;
@ManyToMany(mappedBy = "produtos")
private List<Pedido> pedidos = new ArrayList<>();
public Produto() {
}
public Produto(String name, double preco, boolean favorito, Categoria categoria, List<Pedido> pedidos) {
this.name = name;
this.preco = preco;
this.favorito = favorito;
this.categoria = categoria;
this.pedidos = pedidos;
}
public Produto(String name, double preco, Categoria categoria, List<Pedido> pedidos) {
this.name = name;
this.preco = preco;
this.categoria = categoria;
this.pedidos = pedidos;
}
public Produto(String name, double preco) {
this.name = name;
this.preco = preco;
}
public double getPreco() {
return preco;
}
public void setPreco(double preco) {
this.preco = preco;
}
public long getId_Prod() {
return id_Prod;
}
public void setId_Prod(long id_Prod) {
this.id_Prod = id_Prod;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public boolean isFavorito() {
return favorito;
}
public void setFavorito(boolean favorito) {
this.favorito = favorito;
}
}
package br.org.cesar.Challenge.Entity;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
@Entity
public class Pedido {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id_Ped;
private String prato;
@ManyToMany(mappedBy = "produtos")
private Set<Produto> produtos = new HashSet<>();
public Pedido() {
}
public Pedido(String prato, Set<Produto> produtos) {
this.prato = prato;
this.produtos = produtos;
}
public long getId_Ped() {
return id_Ped;
}
public void setId_Ped(long id_Ped) {
this.id_Ped = id_Ped;
}
public String getPrato() {
return prato;
}
public void setPrato(String prato) {
this.prato = prato;
}
public Set<Produto> getProdutos() {
return produtos;
}
public void setProdutos(Set<Produto> produtos) {
this.produtos = produtos;
}
}
package br.org.cesar.Challenge.Entity;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
@Entity
public class PedidosProdutos {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@OneToMany
private Produto produto;
@OneToMany
private Pedido pedido;
}
package br.org.cesar.Challenge.Entity;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
@Entity
public class Categoria {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id_Cat;
private String nome;
@OneToMany
private List<Produto> produtos = new ArrayList<>();
public Categoria() {
}
public Categoria(String nome) {
this.nome = nome;
}
public long getId_Cat() {
return id_Cat;
}
public void setId_Cat(long id_Cat) {
this.id_Cat = id_Cat;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public List<Produto> getProdutos() {
return produtos;
}
public void setProdutos(List<Produto> produtos) {
this.produtos = produtos;
}
}
package br.org.cesar.Challenge.Repositorio;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;
import br.org.cesar.Challenge.Entity.Categoria;
@RepositoryRestResource(collectionResourceRel = "categoria", path = "categoria")
public interface CategoriaRepositorio extends PagingAndSortingRepository<Categoria, Long> {
}
package br.org.cesar.Challenge.Repositorio;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;
import br.org.cesar.Challenge.Entity.Pedido;
@RepositoryRestResource(collectionResourceRel = "pedido", path = "pedido")
public interface PedidoRepositorio extends PagingAndSortingRepository<Pedido, Long>{
}
package br.org.cesar.Challenge.Repositorio;
import java.util.List;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;
import br.org.cesar.Challenge.Entity.Produto;
@RepositoryRestResource(collectionResourceRel = "produto", path = "produto")
public interface ProdutoRepositorio extends PagingAndSortingRepository<Produto, Long>{
List<Produto> findByName(@Param("name") String name);
List<Produto> findByName(@Param("preco") double name);
}
package br.org.cesar.Challenge;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class ChallengeApplication {
public static void main(String[] args) {
SpringApplication.run(ChallengeApplication.class, args);
}
}