Erro em consulta sql usando max com hibernate

4 respostas
A

pessoal esse é meu codigo

public Reservas procurarReserva() {
	
	sessao = HibernateUtil.getSession();
	tx = sessao.beginTransaction();
	
	Reservas resultados = (Reservas) sessao.createCriteria(Reservas.class)
		    .setProjection( Projections.max("horaPrevista") 
		    )
		    .uniqueResult();
	
	
	//Reservas a = (Reservas) selecao.uniqueResult();

	return resultados;
}

esse é meu método de buscar a hora no banco mas estar dando erro
quando executo dá esse erro:
java.lang.ClassCastException: java.lang.String cannot be cast to modelos.Reservas

gostaria da ajuda de vocês para solucionar esse problema

4 Respostas

ErickRAR

Utilize a tag code para postar seu código. Esse erro ocorre porque você está tentando transformar uma String em Reservas.
Tente assim:

Criteria criteria = session.createCriteria(Reservas.class);
                ProjectionList projectionList = Projections.projectionList();
                projectionList.add(Projections.max("horaPrevista"));
                criteria.setProjection(projectionList);
                Reservas reserva = (Reserva)criteria.uniqueResult();
A

ErickRAR, mesmo usando o código com você me enviou fica dando esse erro

java.lang.ClassCastException: java.lang.String cannot be cast to modelos.Reservas

vou enviar aqui minha classe modelo, o mapeamento e o método de busca:

classe modelo
package modelos;



public class Reservas {

    private long id;
    private String codigo;
    private String valor;
    private String cpf;
    private String fone;
    private String datareserva;
    private String horaPrevista;
    
    private String medicos;
    private String pacientes;
    private String funcionarios;
    private String procedimento;

    
    public long getId() {
		return id;
	}
	public void setId(long id) {
		this.id = id;
	}
	public String getCodigo() {
		return codigo;
	}
	public void setCodigo(String codigo) {
		this.codigo = codigo;
	}
	public String getValor() {
		return valor;
	}
	public void setValor(String valor) {
		this.valor = valor;
	}
	public String getCpf() {
		return cpf;
	}
	public void setCpf(String cpf) {
		this.cpf = cpf;
	}
	public String getFone() {
		return fone;
	}
	public void setFone(String fone) {
		this.fone = fone;
	}
	public String getDatareserva() {
		return datareserva;
	}
	public void setDatareserva(String datareserva) {
		this.datareserva = datareserva;
	}
	public String getMedicos() {
		return medicos;
	}
	public void setMedicos(String medicos) {
		this.medicos = medicos;
	}
	public String getPacientes() {
		return pacientes;
	}
	public void setPacientes(String pacientes) {
		this.pacientes = pacientes;
	}
	public String getFuncionarios() {
		return funcionarios;
	}
	public void setFuncionarios(String funcionarios) {
		this.funcionarios = funcionarios;
	}
	public String getProcedimento() {
		return procedimento;
	}
	public void setProcedimento(String procedimento) {
		this.procedimento = procedimento;
	}
	public String getHoraPrevista() {
		return horaPrevista;
	}
	public void setHoraPrevista(String horaPrevista) {
		this.horaPrevista = horaPrevista;
	}
}
mapeamentos
<class name="modelos.Reservas" table="reserva">
    
        <id name="id" column="idReserva">
            <generator class="increment"/>
        </id>
        
        <property name="codigo" column="codigoReserva"/>
        <property name="datareserva" column="dataReserva"/>
        <property name="cpf" column="cpfPaciReserva"/>
        <property name="valor" column="valReserva"/>
        <property name="fone" column="foneReserva"/>
        <property name="horaPrevista" column="horaPrevistaReserva"/>

        <property name="funcionarios" column="funReserva"/>
        <property name="medicos" column="medReserva"/>
        <property name="pacientes" column="pacReserva"/>
        <property name="procedimento" column="procReserva"/>

    </class>
método do repositorio
public Reservas procurarReserva() {

		sessao = HibernateUtil.getSession();
		tx = sessao.beginTransaction();

		Criteria criteria = sessao.createCriteria(Reservas.class);
		ProjectionList projectionList = Projections.projectionList();
		projectionList.add(Projections.max("horaPrevista"));
		criteria.setProjection(projectionList);
		Reservas reserva = (Reservas) criteria.uniqueResult();

		return reserva;
	}
}

erickrar esse classe e a tabele que quero pesquisar,

A

ErickRAR, esse é a pesquisa que queria fazer com hibernate

SELECT max(horaPrevistaReserva)FROM reserva 
WHERE idReserva = (SELECT max(idReserva) FROM reserva);

em sql deu certo mas quando vai para hibernate/java da pau

A

Olha onsegui buscar no banco o resultado que eu precisava
o problema ainda e mostra na tela o resultado fica dando esse erro:

java.lang.ClassCastException: java.lang.String cannot be cast to modelos.Reservas at utilidades.TesteFachada.main(TesteFachada.java:40)

o método que usei para buscas e estar funcionando é esse:

public List<Reservas> procurarReserva() {

		sessao = HibernateUtil.getSession();
		tx = sessao.beginTransaction();
		
		Criteria criteria = sessao.createCriteria(Reservas.class);  
        ProjectionList projectionList = Projections.projectionList();  
        projectionList.add(Projections.max("horaPrevista"));  
        criteria.setProjection(projectionList);
        
        List reserva = (List)criteria.list(); 
         
		return reserva;
	}
Criado 1 de novembro de 2012
Ultima resposta 5 de nov. de 2012
Respostas 4
Participantes 2