<p:automplete> salva dados diferentes

Olá, tenho um formulario salvando dados, atraves de um autocomplete. Mas ao salvar um dado no banco de dados(MySQL) ele salva da seguinte forma:

Digito por exemplo: teste.
no banco salva: “br.es.saocamilo.entidade.Aluno@33171712”

Gostaria de saber o que estou fazendo de errado.

Bean

[code]package managedbean;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

import br.es.saocamilo.entidade.Mensalidade;
import br.es.saocamilo.persistencia.MensalidadeDao;

@ManagedBean(name=“MensalidadeMB”)
@RequestScoped
public class MensalidadeMB {

private Mensalidade mensalidade = new Mensalidade();



public Mensalidade getMensalidade() {
	return mensalidade;
}

public void setMensalidade(Mensalidade mensalidade) {
	this.mensalidade = mensalidade;
}

public String salvar() {
	new MensalidadeDao().salvarOuAlterar(mensalidade);
	return "ListaMensadalidades.xhtml";
}

public String alterar() {
	new MensalidadeDao().salvarOuAlterar(mensalidade);
	return "";
}

public String deletar(Mensalidade m) {
	new MensalidadeDao().deletar(m);
	return "";
	
}
	
public List consulta() {
		return new MensalidadeDao().consultar();
}



public String ver() {
	new MensalidadeDao().salvarOuAlterar(mensalidade);
	return "CadastroMensalidades.xhtml";
}

public String formataData(Date dt){
	return new SimpleDateFormat("dd/MM/yyyy").format(dt);
}

}
[/code]

Converter

[code]public class AlunoConverter implements Converter {

static List<Aluno> listP = null;


public List<Aluno> getListP(String nome) {
	listP = new AlunoDao().consultar(nome); 
	return listP;
}

@Override
public  Object getAsObject(FacesContext facesContext, UIComponent component, String submittedValue) { 
	if (submittedValue.trim().equals("")) {
		return null;
	} else {
		try {
			int number = Integer.parseInt(submittedValue);
			
			
			for (Aluno a : listP) {
				if (a.getIdAluno().equals(number)) {
					return a;
				}
			}
			
			

		} catch (NumberFormatException exception) {
			exception.printStackTrace();
			throw new ConverterException(new FacesMessage(
					FacesMessage.SEVERITY_ERROR, "Conversion Error",
					"Not a valid player"));
		}
	}

	return null;
}

@Override
public String getAsString(FacesContext facesContext, UIComponent component, Object value) {
    if (value == null || value.equals("")) {  
        return "";  
    } else {  
        return String.valueOf(((Aluno) value).getIdAluno());  
    }	}

}
[/code]

Formulario de Cadastro:

<table width="500" border="0"> <tr> <td>Codigo:</td> <td> <h:inputHidden value="#{MensalidadeMB.mensalidade.idMensalidade}"/> <p:inputText style="background-color: #bdbbbb; width:30px; font-weight: bold;" value = "#{MensalidadeMB.mensalidade.idMensalidade}" readonly="true" /> <br/></td> </tr> <tr> <td><h:outputLabel value="Aluno :" for="dd" /> </td> <td><p:autoComplete minQueryLength="2" value="#{MensalidadeMB.mensalidade.aluno}" completeMethod="#{AlunoMB.consultaComComplete}" var="p" itemLabel="#{p.nome}" itemValue="#{p}" converter="#{AlunoMB.converter()}"/></td> </tr> <tr> <td>Valor da Mensalidade: </td> <td><p:inputText style="width: 50px" value = "#{MensalidadeMB.mensalidade.valor}"/> <br/></td> </tr> <tr> <td>Data Vencimento: </td> <td><p:calendar value = "#{MensalidadeMB.mensalidade.vencimento}"/> <br/></td> </tr> <tr> <td>Data Pagamento: </td> <td><p:calendar value = "#{MensalidadeMB.mensalidade.dataPagamento}"/> <br/></td> </tr> <tr> <td>Status da Fatura: </td> <td><p:selectOneMenu value = "#{MensalidadeMB.mensalidade.status}"> <f:selectItem itemValue="Aberto" itemLabel="Aberto"/> <f:selectItem itemValue="Pago" itemLabel="Pago"/> </p:selectOneMenu></td> </tr> <tr> <td>Desconto: </td> <td><p:inputText style="width: 50px" value = "#{MensalidadeMB.mensalidade.desconto}"/> <br/></td> </tr> <tr> <td>Valor Total: </td> <td><p:inputText style="width: 50px" value = "#{MensalidadeMB.mensalidade.total}"/> <br/></td> </tr> <tr> <td><p:commandButton value= "Salvar" actionListener="#{MensalidadeMB.salvar}" ajax="false" action="ListaMensalidade.xhtml"/> </td> <td><p:commandButton value="Cancelar" actionListener="ListaMensalidade.xhtml" ajax="false" /> </td> </tr> </table>

Desde já, Agradeço a todos…

oi eu já tive este problema também no meu caso foi que estava inserindo o objeto e não ,por exemplo aluno.getnome() etc…
neste caso ele esta inserindo o estado da memoria do objeto aluno.

Ele ta certo velhao, posta ai sua classe MensalidadeDAO pra gente ver como te ajudar, pois voce esta inserindo um objeto aluno no banco, e nao coisas como varchars e integers

MensalidadeDao


public class MensalidadeDao  extends DaoBase<Mensalidade> {

	public MensalidadeDao() {
		super(Mensalidade.class);
		// TODO Auto-generated constructor stub
	}
	
public List <Mensalidade> consultar (String nome){
		
		DetachedCriteria criterio = DetachedCriteria.forClass(Mensalidade.class);
		criterio.add(Restrictions.ilike("nome", nome,
				MatchMode.ANYWHERE));
		
		return criterio.getExecutableCriteria(HibernateUtil.currentSession()).list();
	
	}
}	
	[/code]

DaoBase
[code] public class DaoBase <T> {
	
	
	private Class c;
	
	public DaoBase(Class c){
		this. c = c;
	}

	public List <T> consultar (){
		return HibernateUtil.currentSession()
				.createCriteria(c).list();
	}
	

	public void salvarOuAlterar (T ent){
		Session s = HibernateUtil.currentSession();
		Transaction t = s.beginTransaction();
		s.saveOrUpdate(ent);
		t.commit();
	}
	
	public void deletar (T ent ){
		
		Session s = HibernateUtil.currentSession();
		Transaction t = s.beginTransaction();
		s.delete(ent);
		t.commit();
	}

	
}

Nao entendo nada de hibernate mas voce vai ter que alterar alguma coisa no metodo salvaroualterar cara, mas infelizmente nao entendo mesmo de hibernate espero que alguem experiente possa te ajudar pois ainda estou começando com jsf 2

Obrigado cara, vou continuar tentando aqui, qualquer evolução posto aqui!