Problema na recuperacao dos dados com hibernate

1 resposta
W

Estou com problema para recuperar os dados de uma base Firebird, não aparece nenhuma mensagem de erro, porem eu so consigo recuperar o valor da minha PK, os demais dados da tabela eu não consigo recuperar, veja o codigo:

Classe Marca
public class Marca
{
	private int MAR_COD;
	private String  MAR_DESCRICAO;
	/**
	 * 
	 */
	public Marca ()
	{
		MAR_COD			= 0;
		MAR_DESCRICAO	= "";
	}
	
	public Marca(int Codigo, String Descricao)
	{
		MAR_COD 			= Codigo;
		MAR_DESCRICAO 	= Descricao;
	}

	public void setMAR_COD(int Codigo)
	{
		this.MAR_COD = Codigo;
	}
	
	public int getMAR_COD()
	{
		return MAR_COD;
	}
	
	public void setMAR_DESCRICAO(String Descricao)
	{
		this.MAR_DESCRICAO = Descricao;
	}
	
	public String getMAR_DESCRICAO()
	{
		return MAR_DESCRICAO;
	}
}

Classe MarcaDAO

public class MarcaDAO
{
	private Session session;
	
	/**
	 * 
	 */
	public MarcaDAO() 
	{
		
		//session = Principal.getFactory().openSession();
	}
	
	public void insert (Marca marca)
	{	
		session.save(marca);
		session.flush();
	}

	
	public java.util.List getList (String condicao)
	{
		Query qry = session.createQuery(condicao);
		List lista = qry.list();
		session.flush();
		
		return lista;
	}
	
	public Marca retrieve (int codigo)
	{
		Query qry = session.createQuery("from org.siagem.estoque.Marca as Marca where Marca.MAR_COD = " + codigo);
		Marca marca = (Marca)qry.uniqueResult();
		session.flush();
		
		return marca;
	}
	
	public void delete (Marca marca)
	{
		
		session.delete(marca);
		session.flush();
		
	}
	
	
	
	public Session getSession()
	{
		return (session);
	}
	
	public void setSession()
	{
		session = Principal.getFactory().openSession();
	}
}

Código de recuperação dos dados

int Codigo;
		Codigo = Integer.parseInt(ftf_CodBusca.getText().trim());
		
		if ( Codigo > 0 )
		{
			Limpar_Campos();
			mDAO.setSession();
			
			t_CadMarca = mDAO.getSession().beginTransaction();
			Marca m  = mDAO.retrieve(Integer.parseInt(ftf_CodBusca.getText().trim()));
			ftf_Codigo.setText(String.valueOf(m.getMAR_COD()));
			ftf_Descricao.setText(m.getMAR_DESCRICAO());
			
			t_CadMarca.commit();
			mDAO.getSession().clear();
		}
		else
		{
			JOptionPane.showMessageDialog (null, "Código não foi informado !", "Alerta", JOptionPane.ERROR_MESSAGE);
			ftf_CodBusca.grabFocus();
		}

Marca.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
	<class name="org.siagem.estoque.Marca" table="Marca">
		<id name="MAR_COD" column="MAR_COD" type="int">
			<generator
				class="assigned">
			</generator>
		</id>
		<property name="MAR_DESCRICAO" 
			type="string">
		</property>
	</class>
</hibernate-mapping>

1 Resposta

D

Não sei pq está acontecendo isso, mas talvez seja por causa do nome dos atributos da classe:

private int MAR_COD;
  private String  MAR_DESCRICAO;

tente mudar o nome para algo como:

codigoMarca;
  descricaoMarca;

dai os getters / setters ficariam:

void setCodigoMarca
  void setDescricaoMarca

   getCodigoMarca
   getDescricaoMarca

Isso eh devido a conveção de javabeans, e o hibernate usa isso para acessar os atributos… talvez seja isso…

Criado 18 de abril de 2005
Ultima resposta 18 de abr. de 2005
Respostas 1
Participantes 2