Erro com IFetchEager [RESOLVIDO]

2 respostas
Alberto_Cerqueira

Alguém sabe porque não consigo resgatar o atributo cdEmpresa???

@OneToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="id_cfop_fora_estado")
	private ERPCfop cfopForaEstado;
	
	@OneToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="id_cfop_dentro_estado")
	private ERPCfop cfopDentroEstado;

@Transient
	public static IFetchEager<NCM> FETCH_ALL = new IFetchEager<NCM>(){
		@Override
		public void fetch(NCM orm) {
			FETCH_ERPCFOP_FORA_ESTADO.fetch(orm);
			FETCH_ERPCFOP_DENTRO_ESTADO.fetch(orm);
		}
	};
	
	@Transient
	public static IFetchEager<NCM> FETCH_ERPCFOP_FORA_ESTADO = new IFetchEager<NCM>(){
		@Override
		public void fetch(NCM orm) {
			if (orm.getCfopForaEstado() != null){
				orm.getCfopForaEstado().getCfop().getCodCFOP();
			}
		}
	};
	
	@Transient
	public static IFetchEager<NCM> FETCH_ERPCFOP_DENTRO_ESTADO = new IFetchEager<NCM>(){
		@Override
		public void fetch(NCM orm) {
			if (orm.getCfopDentroEstado() != null){
				orm.getCfopDentroEstado().getCfop().getCodCFOP();
			}
		}
	};
public JSONReturn buscarNcmById(ServletRequest request, ServletResponse response){
		JSONReturn jsonReturn = null;
		Long ncmId = Long.valueOf(request.getParameter("ncmId"));
		try {
			@SuppressWarnings("unchecked")
			NCM ncm = ncmFinder.buscarNcmById(ncmId, 
					NCM.FETCH_ERPCFOP_FORA_ESTADO,
					NCM.FETCH_ERPCFOP_DENTRO_ESTADO);
			jsonReturn = JSONReturn.newInstance(Consequence.SUCESSO, ncm).exclude("cfopForaEstado.formulas");
		} catch (ObjectNotFoundException e) {
			String messageUser = GerenciadorMensagem
					.getMessage("view.manterncm.deletado.por.outro.usuario");
			throw new UserException(messageUser);
		}
		return jsonReturn;
	}
flexjson.JSONException: Error trying to serialize path: [ dado.cfopDentroEstado.cdEmpresa ]
	at flexjson.JSONSerializer$ObjectVisitor.bean(JSONSerializer.java:620)
	at flexjson.JSONSerializer$ObjectVisitor.json(JSONSerializer.java:471)
	at flexjson.JSONSerializer$ObjectVisitor.add(JSONSerializer.java:728)
	at flexjson.JSONSerializer$ObjectVisitor.bean(JSONSerializer.java:598)
	at flexjson.JSONSerializer$ObjectVisitor.json(JSONSerializer.java:471)
	at flexjson.JSONSerializer$ObjectVisitor.addArrayElement(JSONSerializer.java:518)
	at flexjson.JSONSerializer$ObjectVisitor.array(JSONSerializer.java:499)
	at flexjson.JSONSerializer$ObjectVisitor.json(JSONSerializer.java:465)
	at flexjson.JSONSerializer$ObjectVisitor.add(JSONSerializer.java:728)
	at flexjson.JSONSerializer$ObjectVisitor.bean(JSONSerializer.java:598)
	at flexjson.JSONSerializer$ObjectVisitor.json(JSONSerializer.java:471)
	at flexjson.JSONSerializer$ObjectVisitor.visit(JSONSerializer.java:435)
	at flexjson.JSONSerializer.serialize(JSONSerializer.java:222)
	at com.dpcomp.webevolution.framework.json.JSONReturn.serialize(JSONReturn.java:144)
	at com.wave.erp.viewria.servlet.ERPServlet.service(ERPServlet.java:81)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at com.wave.erp.viewria.servlet.SecurityFilter.doFilter(SecurityFilter.java:93)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at com.springsource.insight.collection.tcserver.request.HttpRequestOperationCollectionValve.invoke(HttpRequestOperationCollectionValve.java:84)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
	at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at flexjson.JSONSerializer$ObjectVisitor.bean(JSONSerializer.java:596)
	... 34 more
Caused by: org.hibernate.LazyInitializationException: could not initialize proxy - no Session
	at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:57)
	at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:111)
	at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:150)
	at com.wave.erp.orm.cadastro.ERPCfop$$EnhancerByCGLIB$$c4a1ce6c.getCdEmpresa(<generated>)
	... 39 more

Detalhe eu não posso mudar o atributo para EAGER, pois é requisito da arquitetura.

2 Respostas

Hebert_Coelho

Eu não sei que framework é esse.

Mas para solucionar isso, você teria que fazer uma consulta nessa lista utilizando JOIN FETCH.

Esse post vai te ajudar: Quatro soluções para LazyInitializationException.

Alberto_Cerqueira

Erro de Serializable, apenas excluir alguns dados do JSON (que não eram usados), e passei algumas Fetch na busca para trazer os objetos necessários.

Abraços.

Criado 8 de maio de 2012
Ultima resposta 12 de set. de 2012
Respostas 2
Participantes 2