Olá pessoal do GUJ, gostaria que me tirassem uma dúvida, gerei uma HQL de duas tabelas, porém os dados estão se repetindo e não sei se tem a ver com eu não ter declarado essa tabela associativa na query, e eu acredito que esteja dando esse devido erro ao acessar a jsp.
WARNING: executePhase(RENDER_RESPONSE 6,com.sun.faces.context.FacesContextImpl@1d135b6) threw exception
com.sun.rave.web.ui.appbase.ApplicationException: org.apache.jasper.el.JspPropertyNotFoundException: /protocolo/TipoDocumento.jsp(33,116) '#{currentRow.value['descricao']}' java.lang.IllegalArgumentException: descricao
at com.sun.rave.web.ui.appbase.faces.ViewHandlerImpl.cleanup(ViewHandlerImpl.java:594)
at com.sun.rave.web.ui.appbase.faces.ViewHandlerImpl.renderView(ViewHandlerImpl.java:325)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
at com.sun.faces.extensions.avatar.lifecycle.PartialTraversalLifecycle.render(PartialTraversalLifecycle.java:106)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.sun.webui.jsf.util.UploadFilter.doFilter(UploadFilter.java:370)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at sislegal.filtroweb.LimpaSessaoFilter.doFilter(LimpaSessaoFilter.java:54)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
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:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
Caused by: javax.faces.FacesException: org.apache.jasper.el.JspPropertyNotFoundException: /protocolo/TipoDocumento.jsp(33,116) '#{currentRow.value['descricao']}' java.lang.IllegalArgumentException: descricao
at javax.faces.component.UIOutput.getValue(UIOutput.java:176)
at com.sun.webui.jsf.component.StaticText.getValue(StaticText.java:138)
at com.sun.webui.jsf.component.StaticText.getText(StaticText.java:490)
at com.sun.webui.jsf.renderkit.widget.StaticTextRenderer.getProperties(StaticTextRenderer.java:88)
at com.sun.webui.jsf.renderkit.widget.RendererBase.encodeChildren(RendererBase.java:134)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:812)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:886)
at com.sun.webui.jsf.util.RenderingUtilities.renderComponent(RenderingUtilities.java:73)
at com.sun.webui.jsf.renderkit.html.TableColumnRenderer.encodeChildren(TableColumnRenderer.java:189)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:812)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:886)
at com.sun.webui.jsf.util.RenderingUtilities.renderComponent(RenderingUtilities.java:73)
at com.sun.webui.jsf.renderkit.html.TableRowGroupRenderer.encodeChildren(TableRowGroupRenderer.java:200)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:812)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:886)
at com.sun.webui.jsf.util.RenderingUtilities.renderComponent(RenderingUtilities.java:73)
at com.sun.webui.jsf.renderkit.html.TableRenderer.encodeChildren(TableRenderer.java:172)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:812)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:886)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:892)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:892)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:892)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:892)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:892)
at com.sun.faces.application.ViewHandlerImpl.doRenderView(ViewHandlerImpl.java:245)
at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:176)
at com.sun.rave.web.ui.appbase.faces.ViewHandlerImpl.renderView(ViewHandlerImpl.java:320)
... 26 more
Caused by: org.apache.jasper.el.JspPropertyNotFoundException: /protocolo/TipoDocumento.jsp(33,116) '#{currentRow.value['descricao']}' java.lang.IllegalArgumentException: descricao
at org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:104)
at javax.faces.component.UIOutput.getValue(UIOutput.java:173)
... 52 more
Caused by: java.lang.IllegalArgumentException: descricao
at com.sun.data.provider.impl.ObjectListDataProvider.getFieldKey(ObjectListDataProvider.java:508)
at com.sun.data.provider.impl.TableRowDataProvider.getFieldKey(TableRowDataProvider.java:148)
at com.sun.webui.jsf.faces.DataProviderELResolver$ValueData.getValue(DataProviderELResolver.java:402)
at com.sun.webui.jsf.faces.DataProviderELResolver.getValue(DataProviderELResolver.java:161)
at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53)
at com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:64)
at org.apache.el.parser.AstValue.getValue(AstValue.java:118)
at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
at org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:101)
... 53 more
O erro ocorre nesse trecho de código do jsp
<webuijsf:table augmentTitle="false" binding="#{protocolo$TipoDocumento.tblTipoDocumento}" clearSortButton="true" id="tblTipoDocumento"
paginateButton="true" paginationControls="true" sortPanelToggleButton="true"
style="left: 24px; top: 96px; position: absolute; width: 600px" title="Tipos de Documentos" width="600">
<webuijsf:tableRowGroup binding="#{protocolo$TipoDocumento.tableRowGroup1}" id="tableRowGroup1" rows="5"
selected="#{SessionBean1.selectedState}" sourceData="#{protocolo$TipoDocumento.oldpTipodoc}" sourceVar="currentRow">
<webuijsf:tableColumn id="tableRowGroup1SelectionColumn"
onClick="setTimeout(function(){document.getElementById('form1:groupPanel1:tblTipoDocumento').initAllRows()}, 0);" selectId="tableRowGroup1SelectionChild">
<webuijsf:checkbox id="tableRowGroup1SelectionChild" selected="#{SessionBean1.selected}" selectedValue="#{SessionBean1.selectedValue}"/>
</webuijsf:tableColumn>
<webuijsf:tableColumn headerText="Tipo Documento" id="colTipoDoc" sort="column1" width="103">
<webuijsf:staticText id="staticText3" text="#{currentRow.value['descricao']}"/>
</webuijsf:tableColumn>
<webuijsf:tableColumn headerText="Quantidade" id="colQuantidade" sort="column2">
<webuijsf:staticText id="staticText3" text="#{currentRow.value['quantidade']}"/>
</webuijsf:tableColumn>
<webuijsf:tableColumn headerText="Referência" id="colReferencia" sort="column3">
<webuijsf:staticText id="staticText4" text="#{currentRow.value['referencia']}"/>
</webuijsf:tableColumn>
<webuijsf:tableColumn headerText="Vencimento" id="colVencimento" sort="column4">
<webuijsf:staticText id="staticText2" text="#{currentRow.value['vencimento']}"/>
</webuijsf:tableColumn>
<webuijsf:tableColumn headerText="Valor" id="colValor" sort="column5">
<webuijsf:staticText id="staticText5" text="#{currentRow.value['valor']}"/>
</webuijsf:tableColumn>
<webuijsf:tableColumn headerText="Modelo" id="colModelo" sort="column6">
<webuijsf:staticText id="staticText6" text="#{currentRow.value['modelo']}"/>
</webuijsf:tableColumn>
</webuijsf:tableRowGroup>
</webuijsf:table>
Segue o trecho de código da query
public List recuperaTipoAtributo(String login) {
List recupera = this.getHibernateTemplate().find("from VOTipoDocProtocolo votidocp, " +
"VOAtributoDocumento voatdoc " +
"WHERE votidocp.usuario.login = 'admin' OR votidocp.usuario.login = ?", login);
return recupera;
}
Os mapeamentos
<class name="sislegal.protocolo.vo.VOTipoDocProtocolo" table="tipodocumentoprotocolo">
<id column="COD_TIPODOCUMENTO" name="codTipoDocumento">
<generator class="increment"/>
</id>
<many-to-one class="sislegal.login.vo.VOUsuario" column="usuario_LOGIN" name="usuario"/>
<property column="DESCRICAO" name="descricao" type="string"/>
</class>
<class name="sislegal.protocolo.vo.VOAtributoDocumento" table="atributodocumento">
<id column="COD_ATRIBUTODOCUMENTO" name="codAtributoDoc">
<generator class="increment"/>
</id>
<property column="QUANTIDADE" name="quantidade" type="boolean"/>
<property column="REFERENCIA" name="referencia" type="boolean"/>
<property column="VENCIMENTO" name="vencimento" type="boolean"/>
<property column="VALOR" name="valor" type="boolean"/>
<property column="MODELO" name="modelo" type="boolean"/>
<set name="atribDocHasTipoDoc" table="atributodocumento_has_tipodocumento" cascade="all">
<key column="atributodocumento_COD_ATRIBUTODOCUMENTO" />
<many-to-many column="tipodocumento_COD_TIPODOCUMENTO" class="sislegal.protocolo.vo.VOTipoDocProtocolo"/>
</set>
</class>
E as VOs
public class VOTipoDocProtocolo implements Serializable {
private Long codTipoDocumento;
private String descricao;
private VOUsuario usuario;
public Long getCodTipoDocumento() {
return codTipoDocumento;
}
public void setCodTipoDocumento(Long codTipoDocumento) {
this.codTipoDocumento = codTipoDocumento;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public VOUsuario getUsuario() {
return usuario;
}
public void setUsuario(VOUsuario usuario) {
this.usuario = usuario;
}
public static VOTipoDocProtocolo getNewVOTipoDocProtocolo(String codigo) {
Long codigoDocumento = new Long(codigo);
VOTipoDocProtocolo votdp = new VOTipoDocProtocolo();
votdp.setCodTipoDocumento(codigoDocumento);
return votdp;
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final VOTipoDocProtocolo other = (VOTipoDocProtocolo) obj;
if (this.codTipoDocumento != other.codTipoDocumento && (this.codTipoDocumento == null || !this.codTipoDocumento.equals(other.codTipoDocumento))) {
return false;
}
return true;
}
@Override
public int hashCode() {
int hash = 5;
hash = 61 * hash + (this.codTipoDocumento != null ? this.codTipoDocumento.hashCode() : 0);
return hash;
}
}
public class VOAtributoDocumento implements Serializable {
private Long codAtributoDoc;
private Boolean quantidade;
private Boolean referencia;
private Boolean vencimento;
private Boolean valor;
private Boolean modelo;
private Set<VOTipoDocProtocolo> atribDocHasTipoDoc = new HashSet<VOTipoDocProtocolo>();
public Long getCodAtributoDoc() {
return codAtributoDoc;
}
public void setCodAtributoDoc(Long codAtributoDoc) {
this.codAtributoDoc = codAtributoDoc;
}
public Boolean getModelo() {
return modelo;
}
public void setModelo(Boolean modelo) {
this.modelo = modelo;
}
public Boolean getQuantidade() {
return quantidade;
}
public void setQuantidade(Boolean quantidade) {
this.quantidade = quantidade;
}
public Boolean getReferencia() {
return referencia;
}
public void setReferencia(Boolean referencia) {
this.referencia = referencia;
}
public Boolean getValor() {
return valor;
}
public void setValor(Boolean valor) {
this.valor = valor;
}
public Boolean getVencimento() {
return vencimento;
}
public void setVencimento(Boolean vencimento) {
this.vencimento = vencimento;
}
public Set<VOTipoDocProtocolo> getAtribDocHasTipoDoc() {
return atribDocHasTipoDoc;
}
public void setAtribDocHasTipoDoc(Set<VOTipoDocProtocolo> atribDocHasTipoDoc) {
this.atribDocHasTipoDoc = atribDocHasTipoDoc;
}
}
aproveitando, esse atributo do tipo Set tem de estar nas 2 classes de entidade?
Desde já agradeço