Problema em cadastro utilizando oracle, annotations

3 respostas
PePeLeGaL

ola

ta acontecendo o seguinte erro:

meu metodo da classe cliente eh:

private static void cadastraNovo() 
	{
		Produto produto = new Produto();
		//produto.setCodigo(Integer.parseInt(JOptionPane.showInputDialog(null, "Codigo do produto:")));
		produto.setDescricao(JOptionPane.showInputDialog(null, "Descricao do produto:"));
		
		Resultado resultado = service.cadastraProduto(produto);
		
		if(resultado != null ) 
		{
			if(resultado.getTipoMensagem() != Resultado.ERRO) 
			{
				System.out.println("PRODUTO CADASTRADO COM SUCESSO!");
				produto = (Produto) resultado.getRetorno();
				//System.out.println("CODIGO RETORNADO: " + produto.getCodigo());
				
				if(resultado.getTipoMensagem() == Resultado.WARN) 
				{
					System.out.println(resultado.getMensagem());
				}
			} 
			else 
			{
				System.out.println("ERRO: " + resultado.getMensagem());
			}
		}
	}

classe produto:

/*classe do servidor*/

package br.ufu.fau.edufu.business.model;

import java.io.Serializable;

import javax.persistence.*;

@Entity
@Table(name="PROD")
public class Produto implements Serializable 
{
	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	@Column(unique = true, nullable = false)
	private int codigo;
	
	private String descricao;

	public int getCodigo() 
	{
		return codigo;
	}

	public void setCodigo(int codigo) 
	{
		this.codigo = codigo;
	}

	public String getDescricao() 
	{
		return descricao;
	}

	public void setDescricao(String descricao) 
	{
		this.descricao = descricao;
	}
}

alguem sabe o motivo do erro?

3 Respostas

PePeLeGaL

meu session bean eh:

/*classe do servidor*/

package br.ufu.fau.edufu.business;

import java.util.List;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.PersistenceContext;
import javax.persistence.PersistenceUnit;

import br.ufu.fau.edufu.business.model.Produto;
import br.ufu.fau.edufu.business.model.dao.ProdutoDAO;
import br.ufu.fau.edufu.util.EdufuTO;
import br.ufu.fau.edufu.util.Resultado;

/*
An EntityManager instance is associated with a persistence context. 
A persistence context is a set of entity instances in which for any 
persistent entity identity there is a unique entity instance. Within 
the persistence context, the entity instances and their lifecycle are 
managed. This interface defines the methods that are used to interact 
with the persistence context. The EntityManager API is used to create 
and remove persistent entity instances, to find entities by their primary 
key, and to query over entities.
*/

@Stateless
public class ProdutoServiceBean implements ProdutoService 
{
	@PersistenceUnit
	private EntityManagerFactory emf;
	
	@PersistenceContext(unitName="edufuPU")
	private EntityManager em;
	
	//@Resource
	//UserTransaction utx;

	public Resultado cadastraProduto(Produto produto) 
	{
		Resultado result = new Resultado();
		
		try 
		{
			// SALVAR OS DADOS DO PRODUTO NO BANCO DE DADOS
			 
			System.out.println("OLA! ESTOU NO SESSION BEAN. O PRODUTO EH: "+ produto.getDescricao());
			
			em = emf.createEntityManager();
			
			//produto.setCodigo(1);
			produto = ProdutoDAO.salvaProduto(produto, em);
			
			result.setRetorno(produto);
			result.setMensagem("Cuidado, pois os produtos estao chegando ao nivel muito alto!");
			result.setTipoMensagem(Resultado.WARN);
		} 
		catch (Exception e) 
		{
			e.printStackTrace();
			result.setMensagem(e.getMessage());
			result.setTipoMensagem(Resultado.ERRO);
		}
	
		return result;
	}

	public Resultado findAll() 
	{
		Resultado result = new Resultado();
		
		try 
		{
			 
			em = emf.createEntityManager();
			
			List<Produto> lista = ProdutoDAO.getProdutos(em);
			
			result.setRetorno(lista);
			
		} 
		catch (Exception e) 
		{
			e.printStackTrace();
			result.setMensagem(e.getMessage());
			result.setTipoMensagem(Resultado.ERRO);
		}
		return result;
	}

	public Resultado findBy(EdufuTO to) 
	{
		// TODO Auto-generated method stub
		return null;
	}

	public Resultado findByPK(Integer codigo) 
	{
		// TODO Auto-generated method stub
		return null;
	}

	public Resultado alteraProduto(Produto produto) 
	{
		Resultado result = new Resultado();
		
		try 
		{
			//SALVAR OS DADOS DO PRODUTO NO BANCO DE DADOS
			System.out.println("OLA! ESTOU NO SESSION BEAN. O PRODUTO EH: " + produto.getDescricao());
			
			em = emf.createEntityManager();

			produto = ProdutoDAO.alteraProd(produto, em);
			
			result.setRetorno(produto);
		} 
		catch(Exception e) 
		{
			e.printStackTrace();
			result.setMensagem(e.getMessage());
			result.setTipoMensagem(Resultado.ERRO);
		}
		
		return result;
	}

	public Resultado removeProduto(Produto produto) 
	{
		Resultado result = new Resultado();
	
		try 
		{
			// SALVAR OS DADOS DO PRODUTO NO BANCO DE DADOS
			System.out.println("OLA! ESTOU NO SESSION BEAN. O PRODUTO EH: " + produto.getDescricao());
			
			em = emf.createEntityManager(); //Create a new EntityManager with the specified Map of properties.

			produto = ProdutoDAO.removeProd(produto, em);
			
			result.setRetorno(produto);
		} 
		catch(Exception e) 
		{
			e.printStackTrace();
			result.setMensagem(e.getMessage());
			result.setTipoMensagem(Resultado.ERRO);
		}
		
		return result;
	}
}
PePeLeGaL

pessoal o que eu estou querendo fazer e gerar no banco a chave primaria automaticamente. Quando eu executo o programa e coloco para gerar na mao funciona, mas automatico na funciona :cry:

PePeLeGaL

mudei a classe produto para a forma abaixo, mas mesmo assim ainda nao funcionou.

/*classe do servidor*/

package br.ufu.fau.edufu.business.model;

import java.io.Serializable;
import javax.persistence.*;


@Entity
@Table(name="PROD")
public class Produto implements Serializable 
{
	@Id
	@SequenceGenerator(name="SEQ_COD_PROD", allocationSize=25)
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SEQ_COD_PROD")
    @Column(name = "codigo", nullable=false)
    private int codigo;
	
	private String descricao;

	public int getCodigo() 
	{
		return codigo;
	}

	public void setCodigo(int codigo) 
	{
		this.codigo = codigo;
	}

	public String getDescricao() 
	{
		return descricao;
	}

	public void setDescricao(String descricao) 
	{
		this.descricao = descricao;
	}
}

agora ta dando um erro assim quando eu tento fazer um cadastro:

Criado 12 de junho de 2007
Ultima resposta 12 de jun. de 2007
Respostas 3
Participantes 1