Vraptor 3 + Hibernate + Jsp (RESOLVIDO)

4 respostas
ViniciusNaka

galera, to com dois erros aqui, um de casting e outro de mapeamento(dependendo do meu método na minha classe DAO) …

meu bean…

@Entity
@Table(name="controle_pontos_gestor")
public class ControlePontosGestor implements Serializable{

	private static final long serialVersionUID = 2245989370427069555L;

	@Id
	@GeneratedValue
	@Column(name="id_pontos_gestor")
	private Integer idControlePontosGestor;
	
	@Column(name="recebidos")
	private Integer recebidos;
	
	@Column(name="saldo")
	private Integer saldo;
	
	@Column(name="utilizados")
	private Integer utilizados;
	
	@Column(name="data_saldo")
	private Date dataSaldo;	
	
	@OneToOne(cascade=CascadeType.ALL, fetch=FetchType.LAZY)
	@JoinColumn(name="id_func_gestor", referencedColumnName="id_func")
	private Funcionario funcionario;
        
        //getters e setters

no meu dao, tem o seguinte método… usando dessa forma diz que a minha classe acima não foi mapeada.

// METODO PARA PEGAR O OBJETO
	public ControlePontosGestor getControlePontosGestor(int idGestor){
		Query qr = session.createQuery("from controle_pontos_gestor where id_func_gestor = ?");
		qr.setParameter(0, idGestor);
		return (ControlePontosGestor) qr.uniqueResult();
	}

se uso dessa forma… da o erro abaixo…

// METODO PARA PEGAR O OBJETO
	public ControlePontosGestor getControlePontosGestor(int idGestor){
		SQLQuery sql = session.createSQLQuery("select * from controle_pontos_gestor where id_func_gestor = ?");
		sql.setParameter(0, idGestor);
		return (ControlePontosGestor) sql.uniqueResult();
	}
SEVERE: Servlet.service() for servlet [default] in context with path [/Reconhecimento] threw exception

br.com.caelum.vraptor.InterceptionException: exception raised, check root cause for details: java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to voxage.com.br.entidades.ControlePontosGestor

at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:96)

at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)

at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)

at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)

at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)

at br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:89)

at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:59)

at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)

at voxage.com.br.interceptor.AccessControllerInterceptor.intercept(AccessControllerInterceptor.java:65)

at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)

at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)

at br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:83)

at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)

at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)

at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)

at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)

at br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:48)

at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)

at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)

at br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:71)

at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)

at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)

at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:69)

at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)

at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)

at br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:23)

at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)

at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:58)

at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:244)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)

at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:541)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:383)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:243)

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)

at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:288)

at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at java.lang.Thread.run(Unknown Source)

Caused by: java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to voxage.com.br.entidades.ControlePontosGestor

at voxage.com.br.dao.ControlePontosGestorDAO.getControlePontosGestor(ControlePontosGestorDAO.java:64)

at voxage.com.br.controllers.PontuacaoController.adicionarFuncGestor(PontuacaoController.java:178)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:61)

 43 more

segue meu hibernate.cfg.xml para ajuda…

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
	<session-factory>
		
		<!-- dados do banco -->
		<property name="hibernate.connection.username">sa</property>
		<property name="hibernate.connection.password">savox</property>
		<!-- <property name="hibernate.connection.url">jdbc:microsoft:sqlserver://172.16.0.196;databaseName=RECONHECIMENTO</property> -->
		<property name="hibernate.connection.url">jdbc:jtds:sqlserver://srv-voxportal/RECONHECIMENTO</property>
		<property name="hibernate.connection.driver_class">net.sourceforge.jtds.jdbc.Driver</property> 
		<property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property>
		<property name="hibernate.hbm2ddl.auto">update</property>
		<property name="show_sql">true</property>
		<property name="format_sql">true</property>
		<property name="hibernate.hbm2ddl.auto">update</property>
		
		<!-- <mapping class="SEU_PACKAGE.SUA_CLASSE_AQUI!!"/>  -->
		<mapping class="voxage.com.br.entidades.Funcionario" />
		<mapping class="voxage.com.br.entidades.Usuario" />
		<mapping class="voxage.com.br.entidades.Premiacao" />
		<mapping class="voxage.com.br.entidades.PontuacaoFunc" />
		<mapping class="voxage.com.br.entidades.TipoPontuacao" />
		<mapping class="voxage.com.br.entidades.PontuacaoGestor" />
		<mapping class="voxage.com.br.entidades.Bonificacao" />
		<mapping class="voxage.com.br.entidades.Departamento" />
		<mapping class="voxage.com.br.entidades.ControlePontosFunc" />
		<mapping class="voxage.com.br.entidades.ControlePontosGestor" />
		<mapping class="voxage.com.br.entidades.Resgate" />
			
	</session-factory>
</hibernate-configuration>

desde já agradeço a ajuda.

4 Respostas

caputojf1

Tente dessa forma:

ControlePontosGestor retorno = session.createCriteria(ControlePontosGestor.class).add(Restrictions.eq("id_func_gestor", new Integer(idGestor))).uniqueResult;
		return retorno;

Posta ai se deu certo;

ViniciusNaka

fala caputojf1…

nao funcionou o que vc sugeriu, mas dessa forma funcionou :D…

public ControlePontosGestor getControlePontosGestor(int idGestor){
	Criteria criteria = session.createCriteria(ControlePontosGestor.class);
	criteria.add(Restrictions.eq("funcionario.idFuncionario", idGestor));
	return (ControlePontosGestor) criteria.uniqueResult();		
}

vlw pela ajuda.

abs

G

pq usar hibernate se voce usa sql puro? Use session.createQuery e escreva hql ao inves de sql. O erro acontece pq todo sql é generico se voce não definir um return-entity.

ViniciusNaka

bom dia garcia-jj…
ontem conversei com um ex-colega de trabalho e o mesmo me disse a mesma coisa que vc hehe… comecei a mexer com hibernate a pouquíssimo tempo, a partir de agora é criteria ou hql :slight_smile:
abs

Criado 27 de abril de 2011
Ultima resposta 28 de abr. de 2011
Respostas 4
Participantes 3