@oneToMany no JSF

13 respostas
priscilabrasil2007

Olá, galera!..

estou com um dúvida…e não consigo solucionar…

como trabalhar com @oneTomay no JSF(view)…

está dando erro direto!.. eu tenho lista e não consigo carregar na minha view…

13 Respostas

fabiozanardi

Boa noite, poderia colar o codigo do seu bean, o xhtml e a mensagem de erro para a gente ver?

priscilabrasil2007

Claro que sim!.

as entidades:

a) Quebra de sigilo cliente
private static final long serialVersionUID = 2942396953126460050L;

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID_OFICIO_QUEBRA", nullable = false)
private Long id;

@ManyToOne
@JoinColumn(name = "ID_OFICIO_CLIENTE")  
private ClienteOficio clienteOficio;

@Column(name="DATA_INICIO", nullable=false)	
private Date dataInicio;

@Column(name="DATA_FIM", nullable=false)	
private Date dataFim;

@Column(name="A_PARTIR_DE", nullable=true)	
private BigDecimal A_PARTIR_DE;

@Column(name="SITUACAO", nullable=false)	
private String situacao;

@Column(name="CASO", nullable=false)	
private String caso;


@OneToMany(mappedBy = "numero_conta", fetch = FetchType.LAZY)
private List <SigiloClienteExtrato> contas;

b) sigilo cliente conta

private static final long serialVersionUID = -8290726444449364L;

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID_SIGILO_CONTA", nullable = false)	
private Long id;
	
@ManyToOne
@JoinColumn(name="ID_QUEBRA_SIGILO", nullable=false)
private QuebraSigilo id_oficio_quebra;
	
@Column(name="NUMERO_CONTA", nullable=false)
private String numero_conta;

@Column(name="TIPO_CONTA", length=50, nullable=false)
private Long tipo_conta;

@Column(name="DATA_ABERTURA_CONTA", nullable=false)
private Date data_abertura_conta;

@Column(name="DATA_ENCERRAMENTO_CONTA", nullable=false)
private Date data_encerramento_conta;

@Column(name="MOVIMENTACAO_CONTA",nullable=false)
private Long movimentacao_conta;

@ManyToOne(optional=true)
@JoinColumn(name="UNIDADE", nullable=false)
private Unidade numero_agencia;


@OneToMany(mappedBy = "numero_conta", fetch = FetchType.LAZY)
private List <SigiloClienteExtrato> contas;

@OneToMany(cascade = CascadeType.ALL,mappedBy = "numero_conta", fetch = FetchType.LAZY)
private List <SigiloClienteTitular> titular;
 o meu DAO:

DetachedCriteria criteria = DetachedCriteria.forClass(QuebraSigilo.class, “s”)

.add(<a href="http://Restrictions.ge">Restrictions.ge</a>(“s.dataInicio”, dataInicio))

.add(Restrictions.le(“s.dataFim”, dataFim))

.createAlias(“s.clienteOficio”, “c”,CriteriaSpecification.INNER_JOIN)

.createAlias(“s.contas”, “o”,CriteriaSpecification.INNER_JOIN);

— view:

<h:panelGroup id="pnlTabelaCliente" layout="block" style="width:100%;">
				<r:dataTable id="tableOficio" var="row"
					headerClass="rich-table-subheader" value="#{quebraSigiloBean.listaOficiosEmitidos}"
					rows="10" width="100%" rowClasses="row-odd,row-even"
					rowKeyVar="linha">
					
				<f:facet name="footer">
						<r:datascroller id="tblScroller_cliente" immediate="true"
							maxPages="10" status="_stsLoad1" reRender="tableOficio"
							for="tableOficio"/>
				</f:facet>
							
					<r:column style="text-align: left">
						<f:facet name="header">
							<h:outputText value="#{messages['numero_oficio']}" />
						</f:facet>
						<s:link value="#{row.clienteOficio.oficio.numeroComunicacao}"
							onclick="window.open('#{quebraSigiloBean.relatorioSigilo(row)}')" >
							<f:param name="oficioSelected" value="#{row.clienteOficio}" />
						</s:link>
					</r:column>
						<r:column style="text-align: left">
						<f:facet name="header">
							<h:outputText value="#{messages['numero.caso']}" />
						</f:facet>
					    <h:outputText value="#{row.caso}" />			 
					</r:column>
						<r:column style="text-align: left">
						<f:facet name="header">
							<h:outputText value="#{messages['nome']}" />
						</f:facet>
						<h:outputText value="#{row.clienteOficio.nome}" />
					</r:column>
				<r:column style="text-align: left">
				  <f:facet name="header">
							<h:outputText value="#{messages['agencia']}" />
				  </f:facet>
						<h:outputText value="#{row.clienteOficio.unidade.nome}" />
				</r:column>	
				
				<r:column>	
				
				 <f:facet name="header">
							<h:outputText value="#{messages['conta']}" />
				  </f:facet>
						<h:outputText value="#{row.contas.numero_conta}" />
				</r:column>	
													
					<r:column style="text-align: left">
						<f:facet name="header">
							<h:outputText value="#{messages['situacao']}" />
						</f:facet>
						<h:outputText value="#{row.situacao}" />
					</r:column>					
					<r:column>
						<f:facet name="header">
							<h:outputText value="#{messages['data_solicitacao_inicial']}" />
						</f:facet>
						<h:outputText value="#{row.dataInicio}" />
					</r:column>

					<r:column>
						<f:facet name="header">
							<h:outputText value="#{messages['data_solicitacao_final']}" />
						</f:facet>
						<h:outputText value="#{row.dataFim}" />
					</r:column>
				</r:dataTable>

eu não consigo colocar uma lista contas na minha view… dá erro, pois eu não sei se o meu dao ou não seja possivel quando se trata de lista(@onetomany)

o que pode ser?

priscilabrasil2007

Eu não consigo representa as contas na minha view, por ser dentro da entidade (quebra de sigilo) uma lista @OneToMany(mappedBy = “numero_conta”, fetch = FetchType.LAZY)
private List contas;

priscilabrasil2007

O erro é este:

javax.servlet.ServletException: For input string: “numero_conta”

oliversistemas

Na classe QuebraSigiloBean, verifique se você está inicializando listaOficiosEmitidos
Deverá ficar algo mais ou menos assim…

(Priscila… quando vc for postar códigos, faça assim: clique no botão “code” do editor, cole o código, clique novamente em “code”. Deste modo fica mais fácil pra gente ler seus códigos e te ajudar #ficadica :wink: )

priscilabrasil2007

Pode deixar!!.. irei fazer isso.

fabiozanardi

se der certo responda e fecha o topico com resolvido no assunto :slight_smile:

priscilabrasil2007

EU já instancie…

@DataModel(value = "listaOficiosEmitidos",scope=ScopeType.PAGE)
    private List<QuebraSigilo> listaOficiosEmitidos;

dentro da entidade quebra de sigilo tem uma lista…

eu tenho que instancia-lá dentro do meu bean?

priscilabrasil2007

Ainda não conseguir resolver!..

será que eu tenho que instânciar “SIGILO_CLIENTE_CONTA” DENTRO DO MEU BEAN?

priscilabrasil2007

no entity do Quebra de sigilo eu tenho uma lista porque a associação é do tipo @oneToMany

está lista @oneTomany deve ser intanciada dentro do bean Quebra de sigilo?

não estou conseguindo trabalhar com as lista formadas pela @oneToMany!

priscilabrasil2007
oliversistemas:
Na classe QuebraSigiloBean, verifique se você está inicializando listaOficiosEmitidos Deverá ficar algo mais ou menos assim...
List&lt;SigiloClienteConta&gt; listaOficiosEmitidos = new ArrayList&lt;SigiloClienteConta&gt;();
(Priscila... quando vc for postar códigos, faça assim: clique no botão "code" do editor, cole o código, clique novamente em "code". Deste modo fica mais fácil pra gente ler seus códigos e te ajudar #ficadica ;) )

OLá , Galera!.. resolvido..
conseguir carregar as informações na minha página.

erro: a lista que eu estava instanciando era a incorreta.. ficou assim como o meu colega acima disse:
List&lt;SigiloClienteConta&gt; listaOficiosEmitidos = new ArrayList&lt;SigiloClienteConta&gt;();
tem um problema, como colocar isso no meu Dao? já que o parâmetro de entrada deve ser comparado a uma entidade que tem relação com a a entidade SigiloclienteConta: ficou assim mas creio que está errado porque quando não tem quebra de sigilo deve retornar uma mensagem e isso não está acontecendo:
DetachedCriteria criteria = DetachedCriteria.forClass(SigiloClienteConta.class, "s")
          	   .add(Restrictions.ge("c.dataInicio", dataInicio))
			   .add(Restrictions.le("c.dataFim", dataFim))

          	   .createAlias("s.quebraSigilo", "c",CriteriaSpecification.INNER_JOIN);

isso está certo?

priscilabrasil2007

está retornando este erro:

2012-02-19 17:32:01,534 ERROR [org.jboss.seam.jsf.SeamPhaseListener] (http-0.0.0.0-8080-1) swallowing exception
org.jboss.seam.security.NotLoggedInException
	at org.jboss.seam.navigation.Pages.redirectToLoginView(Pages.java:558)
	at org.jboss.seam.navigation.Pages.preRender(Pages.java:325)
	at org.jboss.seam.jsf.SeamPhaseListener.preRenderPage(SeamPhaseListener.java:561)
	at org.jboss.seam.jsf.SeamPhaseListener.beforeRenderResponse(SeamPhaseListener.java:472)
	at org.jboss.seam.jsf.SeamPhaseListener.beforeServletPhase(SeamPhaseListener.java:148)
	at org.jboss.seam.jsf.SeamPhaseListener.beforePhase(SeamPhaseListener.java:118)
	at com.sun.faces.lifecycle.Phase.handleBeforePhase(Phase.java:214)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:96)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:90)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	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.IdentityFilter.doFilter(IdentityFilter.java:40)
	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:73)
	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.jboss.seam.web.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:42)
	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
	at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
	at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
	at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:368)
	at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:495)
	at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:56)
	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
	at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:60)
	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:235)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190)
	at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92)
	at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)
	at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)
	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:158)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:598)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
	at java.lang.Thread.run(Thread.java:662)
2012-02-19 17:32:01,550 INFO  [STDOUT] (http-0.0.0.0-8080-1) Valor data : null
2012-02-19 17:32:01,565 WARN  [org.ajax4jsf.renderkit.AjaxRendererUtils] (http-0.0.0.0-8080-1) AJAX Status component not found for AjaxComponent with id tblScroller_cliente
priscilabrasil2007

Resolvido!

Criado 18 de fevereiro de 2012
Ultima resposta 20 de fev. de 2012
Respostas 13
Participantes 3