Restriction in EntityQuery (argument type mismatch)
sudeval Jun 9, 2008 3:20 PMHi,
Why my entityList throws an argument type mismatch when i use an not primitive type like param ?
for example:
entityList.java private static final String[] RESTRICTIONS = { "lower(projeto.titulo) like concat(lower(#{projetoList.projeto.titulo}),'%') ", "projeto.unidadeOperacional.id = (#{projetoList.projeto.unidadeOperacional.id}) ", "projeto.enquadramentoProjeto.programa.id = (#{projetoList.projeto.enquadramentoProjeto.programa.id}) ", "projeto.statusProjeto.id = (#{projetoList.projeto.statusProjeto.id}) ", "projeto.dataPrevisaoInicio = (#{projetoList.projeto.dataPrevisaoInicio}) " }; public List<String> getRestrictions() { System.out.println("Estado "+projeto.getStatusProjeto()); return Arrays.asList(RESTRICTIONS); }
entityList.page.xml <?xml version="1.0" encoding="UTF-8"?> <page xmlns="http://jboss.com/products/seam/pages" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jboss.com/products/seam/pages http://jboss.com/products/seam/pages-2.0.xsd"> <param name="firstResult" value="#{projetoList.firstResult}"/> <param name="order" value="#{projetoList.order}"/> <param name="from"/> <param name="statusProjeto" value="#{projetoList.projeto.statusProjeto}"/> <param name="enquadramentoProjeto.programa.id" value="#{projetoList.projeto.enquadramentoProjeto.programa.id}"/> <param name="unidadeOperacional.id" value="#{projetoList.projeto.unidadeOperacional.id}"/> <param name="dataPrevisaoInicio" value="#{projetoList.projeto.dataPrevisaoInicio}"/> <param name="dataPrevisaoFim" value="#{projetoList.projeto.dataPrevisaoFim}" converterId="org.jboss.seam.ui.DateTimeConverter"/> <param name="titulo" value="#{projetoList.projeto.titulo}"/> </page>
entityList.xhtml <h:form id="formBuscaProjeto" styleClass="edit"> <rich:simpleTogglePanel label="Parâmetros da Busca" switchType="ajax"> <s:decorate template="layout/display.xhtml"> <ui:define name="label">Título:</ui:define> <h:inputText id="tituloProjetoParam" value="#{projetoList.projeto.titulo}"/> </s:decorate> <s:decorate template="layout/display.xhtml"> <ui:define name="label">Unidade Operacional:</ui:define> <h:selectOneMenu value="#{projetoList.projeto.unidadeOperacional}"> <s:selectItems var="unidadeOperacional" value="#{unidadeOperacionalList.resultList}" label="#{unidadeOperacional.nome}" noSelectionLabel="selecione uma unidade operacional..."/> <s:convertEntity/> </h:selectOneMenu> </s:decorate> <s:decorate template="layout/display.xhtml"> <ui:define name="label">Programa:</ui:define> </s:decorate> <s:decorate template="layout/display.xhtml"> <ui:define name="label">Categoria:</ui:define> </s:decorate> <s:decorate template="layout/display.xhtml"> <ui:define name="label">Valor:</ui:define> </s:decorate> <s:decorate template="layout/display.xhtml"> <ui:define name="label">Período Execução:</ui:define> <h:inputText value="#{projetoList.projeto.dataPrevisaoInicio}"> <f:convertDateTime type="date" pattern="dd/MM/yyyy"/> </h:inputText> </s:decorate> <s:decorate template="layout/display.xhtml"> <ui:define name="label">Status:</ui:define> <h:selectOneMenu value="#{projetoList.projeto.statusProjeto}"> <s:selectItems var="statusProjeto" value="#{statusProjetoList.resultList}" label="#{statusProjeto.nome}" noSelectionLabel="selecione um status..."/> <s:convertEntity/> </h:selectOneMenu> </s:decorate> </rich:simpleTogglePanel> <div class="actionButtons"> <h:commandButton id="buscar" value="Buscar" action="/projetoList.xhtml"/> </div>
error ... 09:45:21,938 INFO [STDOUT] Estado FINALIZADO 09:45:21,954 INFO [STDOUT] Hibernate: select top 5 projeto0_.id as id15_, projeto0_.titulo as titulo15_, projeto0_.justificativa as justific3_15_, projeto0_.metodologia as metodolo4_15_, projeto0_.objetivoGeral as objetivo5_15_, projeto0_.publicoAlvo as publicoA6_15_, projeto0_.resultadoDesejado as resultad7_15_, projeto0_.dataPrevisaoInicio as dataPrev8_15_, projeto0_.dataPrevisaoFim as dataPrev9_15_, projeto0_.idUsuario as idUsuario15_, projeto0_.idUnidadeOperacional as idUnida13_15_, projeto0_.totalRecursosProjeto as totalRe10_15_, projeto0_.idEnquadramentoProjeto as idEnqua12_15_, projeto0_.idStatus as idStatus15_ from Projeto projeto0_ where projeto0_.idStatus=? 09:45:22,032 ERROR [SeamPhaseListener] uncaught exception javax.el.ELException: java.lang.IllegalArgumentException: argument type mismatch at javax.el.BeanELResolver.setValue(BeanELResolver.java:116) at javax.el.CompositeELResolver.setValue(CompositeELResolver.java:68) at com.sun.faces.el.FacesCompositeELResolver.setValue(FacesCompositeELResolver.java:93) at org.jboss.el.parser.AstPropertySuffix.setValue(AstPropertySuffix.java:73) at org.jboss.el.parser.AstValue.setValue(AstValue.java:84) at org.jboss.el.ValueExpressionImpl.setValue(ValueExpressionImpl.java:249) at org.jboss.seam.core.Expressions$1.setValue(Expressions.java:116) at org.jboss.seam.navigation.Pages.applyConvertedValidatedValuesToModel(Pages.java:788) at org.jboss.seam.navigation.Pages.postRestore(Pages.java:409) at org.jboss.seam.jsf.SeamPhaseListener.postRestorePage(SeamPhaseListener.java:544) at org.jboss.seam.jsf.SeamPhaseListener.afterRestoreView(SeamPhaseListener.java:390) at org.jboss.seam.jsf.SeamPhaseListener.afterServletPhase(SeamPhaseListener.java:226) at org.jboss.seam.jsf.SeamPhaseListener.afterPhase(SeamPhaseListener.java:192) at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:280) 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 org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83) at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:85) at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64) at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45) at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:147) at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:256) at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:362) at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:488) at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:60) at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:58) at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) at org.jboss.seam.debug.hot.HotDeployFilter.doFilter(HotDeployFilter.java:68) at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158) 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.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432) 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(Thread.java:619) Caused by: java.lang.IllegalArgumentException: argument type mismatch at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at javax.el.BeanELResolver.setValue(BeanELResolver.java:108) ... 54 more