Problemas em executar criteria.list com hibernate [RESOLVIDO]

2 respostas
francis.junio

Boa tarde galera,
Estou com um problema quando vou executar um criteria.list
Na classe DAO do objeto eu adiciono o Criterion

public List<FlexFieldValue> getFlexFieldByInterfaceOperation(Long idInterfaceOp){
		List<Criterion> list = new ArrayList<Criterion>();		
		Criterion idOperation = Restrictions.eq("interfaceOperationId", idInterfaceOp);
		list.add(idOperation);				
		return super.getCriteria(list);	

	}

E na classe DAO Generic ele cria a Query sql e executa o comando. O sql é criado corretamente, pq eu consigo pega-lo e executar no banco sem erros.

private Session getSession(){
    	if (session == null || !session.isConnected()){
    		SessionFactory sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
    		session = sessionFactory.openSession();    		
    	}
    	return session;
    }

public List getCriteria(List<Criterion> list){
    	logger.info("Find By Criteria class" + this.persistentClass);    	
    	Criteria criteria = getSession().createCriteria(persistentClass);    	
    	for (Criterion c : list) {
    		criteria.add(c);
    	}    	
    	return criteria.list();
    }

Segue abaixo a Excessao que ta dando.

javax.faces.el.EvaluationException: /ErrosOperacao.xhtml @80,64 action="#{interfaceOperationMB.getFlexFieldRow}": org.hibernate.PropertyAccessException: could not get a field value by reflection getter of br.com.sigga.model.InterfaceOperation.interfaceOperationId
	at com.sun.facelets.el.LegacyMethodBinding.invoke(LegacyMethodBinding.java:73)
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:91)
	at javax.faces.component.UICommand.broadcast(UICommand.java:383)
	at org.ajax4jsf.component.AjaxActionComponent.broadcast(AjaxActionComponent.java:55)
	at org.ajax4jsf.component.UIDataAdaptor.broadcast(UIDataAdaptor.java:1359)
	at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:317)
	at org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:292)
	at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:249)
	at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:462)
	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
	at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at br.com.sigga.util.SecurityFilter.doFilter(SecurityFilter.java:41)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:154)
	at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:260)
	at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:366)
	at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:493)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
	at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
	at java.lang.Thread.run(Unknown Source)
Caused by: org.hibernate.PropertyAccessException: could not get a field value by reflection getter of br.com.sigga.model.InterfaceOperation.interfaceOperationId

Segue abaixo o mapeamento das classes referentes.

@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "WIP_OPERATION_ID", referencedColumnName = "INTERFACE_OPERATION_ID")    
private InterfaceOperation interfaceOperationId;

Eu nao sei oq pode esta acontecendo pq sou novo com Hibernate. Alguem pode me dar uma ajuda?
OBS: no erro fala alguma coisa de getter. Todos os atributos das classes estao com getter and setters criados.

Aguardo retorno.
Obrigado galera

2 Respostas

mgarcia

fala…
cara… vc está tentando setando um tipo Long, quando deveria setar um tipo InterfaceOperation.

quando vc faz

tem q passar um tipo InterfaceOperation ou entao utilizar o atributo de InterfaceOperation q é Long.

francis.junio

Booaaa mgarcia…
Obrigado pela dica cara…
Consegui resolver o problema. Sou novo com Hibernate e nao peguei as manhas ainda.
Eu estava passando um Long para comparar com o Objeto interfaceOperation. Na verdade, foi como você disse, é preciso passar um objeto InterfaceOperation para fazer a comparação.
Fica a dica para quem precisar.

Vlw.

Criado 22 de junho de 2010
Ultima resposta 23 de jun. de 2010
Respostas 2
Participantes 2