Olá pessoal, gostaria muito da ajuda de voces.
Eu estou fazendo um projeto usando vraptor, sitemesh , hibernate e utilizei o projeto lojavirtual como exemplo, até que estou indo bem, poreeeeeem estou travado numa parte.
Tenho uma classe Produto, que contem uma Categoria e um Fornecedor, porem não estou conseguindo listar na tela de cadastro de produtos os fornecedores e a categoria…
Voces poderiam me ajudar ?
Segue as minhas classes abaixo.
O meu JSP
<%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Cadastro de produtos</title>
</head>
<body>
<div align="center">
<h1>Cadastro de Produtos</h1>
<form action="produto.adiciona.logic" method="get">
<table>
<tr>
<td>Nome do Produto:</td>
<td>Status:</td>
</tr>
<tr>
<td><input maxlength="25" size="35" name="produto.nome"></td>
<td><select name="produto.status">
<option>ATIVO</option>
<option>INATIVO</option>
</select></td>
</tr>
<tr>
<td>Marca:</td>
<td>Modelo:</td>
</tr>
<tr>
<td> <input maxlength="25" size="35" name="produto.marca"></td>
<td> <input maxlength="25" size="35" name="produto.modelo"></td>
</tr>
<tr>
<td>Valor de Venda:</td>
<td>Valor de Compra:</td>
</tr>
<tr>
<td> <input maxlength="25" size="35" name="produto.vlvenda"></td>
<td> <input maxlength="25" size="35" name="produto.vlcompra"></td>
</tr>
<tr>
<td>Quantidade:</td>
<td>Fornecedor</td>
</tr>
<tr>
<td><input maxlength="25" size="35" name="produto.quantidade"></td>
<td><select name=produto.fornecedor.id">
<c:forEach var="fornecedor" items="${ListaFornecedores}">
<option value="${fornecedor.id}">
<c:if test="${produto.fornecedor.id == fornecedor.id}"></c:if>
${fornecedor.nome}
</option>
</c:forEach>
</select>
</td>
</tr>
<tr>
<td>Categoria:</td>
<td>Data: </td>
</tr>
<tr>
<td><select name=produto.categoria.id">
<c:forEach var="categoria" items="${listaCategorias}">
<option value="${categoria.id}">
<c:if test="${produto.categoria.id == categoria.id}"selected="true"></c:if>
${categoria.nome}
</option>
</c:forEach>
</select></td>
<td><input maxlength="25" size="35" name="produto.data"></td>
</tr>
</table>
<input type="submit" name="Cadastrar"/>
</form>
</div>
</body>
</html>
O ProdutoLogic
mport br.com.projeto.loja.DaoInterceptor;
import br.com.projeto.modelo.Categoria;
import br.com.projeto.modelo.Fornecedor;
import br.com.projeto.modelo.Produto;
import br.com.projeto.modelo.dao.DaoFactory;
import java.util.List;
import org.vraptor.annotations.Component;
import org.vraptor.annotations.InterceptedBy;
/**
*
* @author Bruno Wilson
*/
@Component
@InterceptedBy({AutorizadorInterceptor.class, DaoInterceptor.class})
public class ProdutoLogic {
private final DaoFactory daoFactory;
private List<Produto> produtos;
public ProdutoLogic(DaoFactory daoFactory) {
this.daoFactory = daoFactory;
}
public void adiciona(Produto produto) {
this.daoFactory.beginTransaction();
this.daoFactory.getProdutoDao().adiciona(produto);
this.daoFactory.commit();
}
public void remove(Produto produto) {
this.daoFactory.beginTransaction();
this.daoFactory.getProdutoDao().remove(produto);
this.daoFactory.commit();
}
public void formulario() {
}
public List<Produto> getProdutos() {
return produtos;
}
public List<Fornecedor> getListaFornecedores() {
return this.daoFactory.getFornecedorDao().listaTudo();
}
public List<Categoria> getListaCategorias() {
return this.daoFactory.getCategoriaDao().listaTudo();
}
public void lista() {
produtos = this.daoFactory.getProdutoDao().listaTudo();
}
}
A classe Produto
import java.util.Date;
import javax.persistence.*;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
/**
*
* @author Bruno Wilson
*/
@Entity
public class Produto {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name="id_produto")
private Long id;
@Column(name="nome_produto",
unique=true, nullable=false,
insertable=true, updatable=true,
length=30)
private String nome;
@Column(nullable=false,
insertable=true, updatable=true,
length=30)
private String modelo;
@Column(nullable=false,
insertable=true, updatable=true,
length=30)
private String marca;
@Column(nullable=false,
insertable=true, updatable=true)
private double vlvenda;
@Column(nullable=false,
insertable=true, updatable=true)
private double vlcompra;
@Column(nullable=false,
insertable=true, updatable=true)
private int quantidade;
@Column(name="data_cadastro",
nullable=false,
insertable=true, updatable=true)
@Temporal(TemporalType.TIMESTAMP)
private Date data;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name="id_categoria",
insertable=true, updatable=true)
@Fetch(FetchMode.JOIN)
@Cascade(CascadeType.SAVE_UPDATE)
private Categoria categoria;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name="id_fornecedor",
insertable=true, updatable=true)
@Fetch(FetchMode.JOIN)
@Cascade(CascadeType.SAVE_UPDATE)
private Fornecedor fornecedor;
@Column(unique=false, nullable=false,
insertable=true, updatable=true,
length=10)
private String status;
public Produto() {
}
public Categoria getCategoria() {
return categoria;
}
public void setCategoria(Categoria categoria) {
this.categoria = categoria;
}
public Date getData() {
return data;
}
public void setData(Date data) {
this.data = data;
}
public Fornecedor getFornecedor() {
return fornecedor;
}
public void setFornecedor(Fornecedor fornecedor) {
this.fornecedor = fornecedor;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getMarca() {
return marca;
}
public void setMarca(String marca) {
this.marca = marca;
}
public String getModelo() {
return modelo;
}
public void setModelo(String modelo) {
this.modelo = modelo;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public int getQuantidade() {
return quantidade;
}
public void setQuantidade(int quantidade) {
this.quantidade = quantidade;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public double getVlcompra() {
return vlcompra;
}
public void setVlcompra(double vlcompra) {
this.vlcompra = vlcompra;
}
public double getVlvenda() {
return vlvenda;
}
public void setVlvenda(double vlvenda) {
this.vlvenda = vlvenda;
}
}
O meu dao
public class DaoFactory {
private final Session session;
private Transaction transaction;
public DaoFactory() {
session = HibernateUtil.getSession();
}
public void beginTransaction() {
this.transaction = this.session.beginTransaction();
}
public void commit() {
this.transaction.commit();
this.transaction = null;
}
public boolean hasTransaction() {
return this.transaction != null;
}
public void rollback() {
this.transaction.rollback();
this.transaction = null;
}
public void close() {
this.session.close();
}
public UsuarioDao getUsuarioDao() {
return new UsuarioDao(this.session);
}
public Dao<Categoria> getCategoriaDao() {
return new Dao<Categoria>(this.session, Categoria.class);
}
public Dao<Fornecedor> getFornecedorDao() {
return new Dao<Fornecedor>(this.session, Fornecedor.class);
}
public Dao<Produto> getProdutoDao() {
return new Dao<Produto>(this.session, Produto.class);
}
public Dao<TipoPgto> getTipoPgtoDao() {
return new Dao<TipoPgto>(this.session, TipoPgto.class);
}
}