Error accessing field [RESOLVIDO]

17 respostas
java
L

Bom dia pessoal, estou com um problema ao finalizar um processo de devolução. Li alguns artigos e problemas parecidos na web e vi que o problema pode ser a versão do hibernate ou até mesmo o mapeamento de classes que eu fiz que pode estar com problema, e não estou conseguindo solucionar. O problema está no momento de setar os itens da compra para o itemDevolucaoCompra. Postarei algumas partes principais do código, se alguém puder me dar uma mão, agradeço.

public void finalizarDevolucao(){
			
	this.devolucaoCompra.setEmpresa(seguranca.getEmpresa());
	this.devolucaoCompra.setDataDevolucao(new Date());	

	for (ItemDevolucaoCompra ic : this.itensConfirmadosDevol) {
		this.devolucaoCompra.addItemDevolucaoCompra(ic);
	}
	//this.devolucaoCompra.setItensDevolucaoCompra(this.itensConfirmadosDevol);
	
	devolucaoCompra = devolucaoCompraService.save(devolucaoCompra);
	
	FacesUtil.showMessage("", "Devolução de Compra finalizada com sucesso!");
}

public void confirmaDevolucao(){
	this.itensConfirmadosDevol = new ArrayList<ItemDevolucaoCompra>();				
	
	System.out.println(itensCompraDevolucao.getTarget().isEmpty());
	for (ItemCompra ic : itensCompraDevolucao.getTarget()) {
		ItemDevolucaoCompra idc = new ItemDevolucaoCompra();
		idc.setItemCompra(ic);
		idc.setValorUnitario(ic.getValorUnitario());			
		this.itensConfirmadosDevol.add(idc);
	}
	
	FacesUtil.showMessage("", "Itens da Devolução de Compra confirmados com sucesso!");
}

Este é as funcionalidades do devolucaoCompraController, o problema está no finalizarDevolucao linha 7 ou a comentada.

Minha entidade que estou tentando setar.

@Entity(name=devolucaocompra)

public class DevolucaoCompra extends Devolucao {
@OneToMany(targetEntity = ItemCompra.class, fetch=FetchType.EAGER, cascade=CascadeType.ALL)
@JoinTable(name="devolucaocompra_itensdevolucaocompra", joinColumns = @JoinColumn(name = "devolucaocompra_id"), inverseJoinColumns = @JoinColumn(name = "itensdevolucaocompra_id"))
@OrderColumn(name="devolucaocompra")
private List<ItemDevolucaoCompra> itensDevolucaoCompra = new ArrayList<ItemDevolucaoCompra>();

public List<ItemDevolucaoCompra> getItensDevolucaoCompra() {
	return itensDevolucaoCompra;
}

public void setItensDevolucaoCompra(List<ItemDevolucaoCompra> itensDevolucaoCompra) {
	this.itensDevolucaoCompra = itensDevolucaoCompra;
}

public void addItemDevolucaoCompra(ItemDevolucaoCompra itemDevolucaoCompra){
	if (this.itensDevolucaoCompra == null) {
		this.itensDevolucaoCompra = new ArrayList<ItemDevolucaoCompra>();
	}
	itensDevolucaoCompra.add(itemDevolucaoCompra);
}

}

Erro no console:

javax.faces.FacesException: #{devolucaoCompraController.finalizarDevolucao}: org.springframework.orm.jpa.JpaSystemException: Error accessing field [private java.lang.Long <a href="http://br.com.rfsolutionit.business.comercial.model.ItemCompra.id">br.com.rfsolutionit.business.comercial.model.ItemCompra.id</a>] by reflection for persistent property [br.com.rfsolutionit.business.comercial.model.ItemCompra#id] : br.com.rfsolutionit.business.comercial.model.ItemDevolucaoCompra@3c1; nested exception is org.hibernate.property.access.spi.PropertyAccessException: Error accessing field [private java.lang.Long <a href="http://br.com.rfsolutionit.business.comercial.model.ItemCompra.id">br.com.rfsolutionit.business.comercial.model.ItemCompra.id</a>] by reflection for persistent property [br.com.rfsolutionit.business.comercial.model.ItemCompra#id] : br.com.rfsolutionit.business.comercial.model.ItemDevolucaoCompra@3c1

at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:118)

at org.primefaces.application.DialogActionListener.processAction(DialogActionListener.java:45)

at javax.faces.component.UICommand.broadcast(UICommand.java:315)

at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)

at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)

at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)

at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)

at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)

at javax.faces.webapp.FacesServlet.service(FacesServlet.java:658)

at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:845)

at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1689)

at org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:225)

at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1676)

at org.springframework.boot.web.filter.ApplicationContextHeaderFilter.doFilterInternal(ApplicationContextHeaderFilter.java:55)

at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1676)

at org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter.doFilterInternal(OpenEntityManagerInViewFilter.java:178)

at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1676)

at org.ocpsoft.rewrite.servlet.RewriteFilter.doFilter(RewriteFilter.java:205)

at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1676)

at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:100)

at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1676)

at org.springframework.boot.actuate.trace.WebRequestTraceFilter.doFilterInternal(WebRequestTraceFilter.java:105)

at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1676)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:317)

at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127)

at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)

at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:115)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)

at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)

at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)

at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:169)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)

at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)

at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:200)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)

at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:121)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)

at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:66)

at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)

at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)

at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56)

at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)

at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:214)

at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:177)

at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)

at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262)

at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1676)

at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)

at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1676)

at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:87)

at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1676)

at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77)

at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1676)

at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)

at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1676)

at org.springframework.boot.actuate.autoconfigure.MetricsFilter.doFilterInternal(MetricsFilter.java:107)

at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1676)

at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)

at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)

at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)

at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)

at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1180)

at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)

at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)

at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112)

at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)

at org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:397)

at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134)

at org.eclipse.jetty.server.Server.handle(Server.java:524)

at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:319)

at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:253)

at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:273)

at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)

at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93)

at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.executeProduceConsume(ExecuteProduceConsume.java:303)

at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:148)

at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:136)

at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671)

at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589)

at java.lang.Thread.run(Thread.java:745)

Caused by: javax.faces.el.EvaluationException: org.springframework.orm.jpa.JpaSystemException: Error accessing field [private java.lang.Long <a href="http://br.com.rfsolutionit.business.comercial.model.ItemCompra.id">br.com.rfsolutionit.business.comercial.model.ItemCompra.id</a>] by reflection for persistent property [br.com.rfsolutionit.business.comercial.model.ItemCompra#id] : br.com.rfsolutionit.business.comercial.model.ItemDevolucaoCompra@3c1; nested exception is org.hibernate.property.access.spi.PropertyAccessException: Error accessing field [private java.lang.Long <a href="http://br.com.rfsolutionit.business.comercial.model.ItemCompra.id">br.com.rfsolutionit.business.comercial.model.ItemCompra.id</a>] by reflection for persistent property [br.com.rfsolutionit.business.comercial.model.ItemCompra#id] : br.com.rfsolutionit.business.comercial.model.ItemDevolucaoCompra@3c1

at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:101)

at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)

 94 common frames omitted

Caused by: org.springframework.orm.jpa.JpaSystemException: Error accessing field [private java.lang.Long <a href="http://br.com.rfsolutionit.business.comercial.model.ItemCompra.id">br.com.rfsolutionit.business.comercial.model.ItemCompra.id</a>] by reflection for persistent property [br.com.rfsolutionit.business.comercial.model.ItemCompra#id] : br.com.rfsolutionit.business.comercial.model.ItemDevolucaoCompra@3c1; nested exception is org.hibernate.property.access.spi.PropertyAccessException: Error accessing field [private java.lang.Long <a href="http://br.com.rfsolutionit.business.comercial.model.ItemCompra.id">br.com.rfsolutionit.business.comercial.model.ItemCompra.id</a>] by reflection for persistent property [br.com.rfsolutionit.business.comercial.model.ItemCompra#id] : br.com.rfsolutionit.business.comercial.model.ItemDevolucaoCompra@3c1

at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:333)

at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:244)

at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:491)

at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:59)

at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:213)

at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:147)

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)

at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:133)

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)

at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)

at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213)

at com.sun.proxy.$Proxy215.saveAndFlush(Unknown Source)

at br.com.rfsolutionit.comercial.service.DevolucaoCompraServiceImpl.save(DevolucaoCompraServiceImpl.java:34)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:497)

at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:333)

at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)

at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)

at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:280)

at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)

at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213)

at com.sun.proxy.$Proxy216.save(Unknown Source)

at br.com.rfsolutionit.web.controller.comercial.DevolucaoCompraController.finalizarDevolucao(DevolucaoCompraController.java:63)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:497)

at com.sun.el.parser.AstValue.invoke(AstValue.java:234)

at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:297)

at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)

at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87)

 95 common frames omitted

Caused by: org.hibernate.property.access.spi.PropertyAccessException: Error accessing field [private java.lang.Long <a href="http://br.com.rfsolutionit.business.comercial.model.ItemCompra.id">br.com.rfsolutionit.business.comercial.model.ItemCompra.id</a>] by reflection for persistent property [br.com.rfsolutionit.business.comercial.model.ItemCompra#id] : br.com.rfsolutionit.business.comercial.model.ItemDevolucaoCompra@3c1

at org.hibernate.property.access.spi.GetterFieldImpl.get(GetterFieldImpl.java:43)

at org.hibernate.tuple.entity.AbstractEntityTuplizer.getIdentifier(AbstractEntityTuplizer.java:223)

at org.hibernate.persister.entity.AbstractEntityPersister.getIdentifier(AbstractEntityPersister.java:4601)

at org.hibernate.persister.entity.AbstractEntityPersister.isTransient(AbstractEntityPersister.java:4313)

at org.hibernate.engine.internal.ForeignKeys.isTransient(ForeignKeys.java:226)

at org.hibernate.event.internal.AbstractSaveEventListener.getEntityState(AbstractSaveEventListener.java:510)

at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:99)

at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:765)

at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:758)

at org.hibernate.jpa.event.internal.core.JpaPersistEventListener$1.cascade(JpaPersistEventListener.java:80)

at org.hibernate.engine.internal.Cascade.cascadeToOne(Cascade.java:398)

at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:323)

at org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:162)

at org.hibernate.engine.internal.Cascade.cascadeCollectionElements(Cascade.java:431)

at org.hibernate.engine.internal.Cascade.cascadeCollection(Cascade.java:363)

at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:326)

at org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:162)

at org.hibernate.engine.internal.Cascade.cascade(Cascade.java:111)

at org.hibernate.event.internal.AbstractSaveEventListener.cascadeAfterSave(AbstractSaveEventListener.java:456)

at org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:278)

at org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:178)

at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:109)

at org.hibernate.jpa.event.internal.core.JpaPersistEventListener.saveWithGeneratedId(JpaPersistEventListener.java:67)

at org.hibernate.event.internal.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:189)

at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:132)

at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:58)

at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:775)

at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:748)

at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:753)

at org.hibernate.jpa.spi.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:1146)

at sun.reflect.GeneratedMethodAccessor458.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:497)

at org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:347)

at com.sun.proxy.$Proxy119.persist(Unknown Source)

at sun.reflect.GeneratedMethodAccessor458.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:497)

at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:298)

at com.sun.proxy.$Proxy119.persist(Unknown Source)

at org.springframework.data.jpa.repository.support.SimpleJpaRepository.save(SimpleJpaRepository.java:506)

at org.springframework.data.jpa.repository.support.SimpleJpaRepository.saveAndFlush(SimpleJpaRepository.java:520)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:497)

at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.executeMethodOn(RepositoryFactorySupport.java:503)

at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.doInvoke(RepositoryFactorySupport.java:488)

at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:460)

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)

at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:61)

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)

at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)

at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:280)

at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)

at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:136)

 125 common frames omitted

Caused by: java.lang.IllegalArgumentException: Can not set java.lang.Long field <a href="http://br.com.rfsolutionit.business.comercial.model.ItemCompra.id">br.com.rfsolutionit.business.comercial.model.ItemCompra.id</a> to br.com.rfsolutionit.business.comercial.model.ItemDevolucaoCompra

at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:167)

at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:171)

at sun.reflect.UnsafeFieldAccessorImpl.ensureObj(UnsafeFieldAccessorImpl.java:58)

at sun.reflect.UnsafeObjectFieldAccessorImpl.get(UnsafeObjectFieldAccessorImpl.java:36)

at java.lang.reflect.Field.get(Field.java:393)

at org.hibernate.property.access.spi.GetterFieldImpl.get(GetterFieldImpl.java:39)

 181 common frames omitted

17 Respostas

E

Amigo, poste o código de sua classe ItemCompra.

R

Verifique na sua classe ItemCompra se seu atributo id possui getter e setter público.

L

Segue abaixo…

Sim, já verifiquei se possuía e mesmo assim da o erro.

@Entity(name=“itemcompra”)
public class ItemCompra implements Serializable {

private static final long serialVersionUID = 1L;

@Id
@GeneratedValue
private Long id;

@NotNull
@ManyToOne(targetEntity = Compra.class)
@JoinColumn(name = "compra_fk")
private Compra compra;

@NotNull
@ManyToOne(targetEntity = Produto.class)
@JoinColumn(name = "produto_fk")
private Produto produto;

@NotNull
@Column(precision = 12, scale = 4)
private BigDecimal valorUnitario = BigDecimal.ZERO;

@NotNull
@Column(precision = 12, scale = 4)
private BigDecimal quantidade = BigDecimal.ZERO;


public Long getId() {
	return id;
}

public void setId(Long id) {
	this.id = id;
}

public Compra getCompra() {
	return compra;
}

public void setCompra(Compra compra) {
	this.compra = compra;
}

public Produto getProduto() {
	return produto;
}

public void setProduto(Produto produto) {
	this.produto = produto;
}

public BigDecimal getValorUnitario() {
	return valorUnitario;
}

public void setValorUnitario(BigDecimal valorUnitario) {
	this.valorUnitario = valorUnitario;
}

public BigDecimal getQuantidade() {
	return quantidade;
}

public void setQuantidade(BigDecimal quantidade) {
	this.quantidade = quantidade;
}

@Transient
public BigDecimal getValorTotal() {
	return this.getValorUnitario().multiply(this.getQuantidade());
}

@Transient
public boolean isProdutoAssociado() {
	return this.getProduto().getId() != null ;
}

@Transient
public boolean isEstoqueSuficiente() {
	return this.getCompra().isFinalizada() || this.getProduto().getId() == null
		|| this.getProduto().getQuantidadeEstoque().compareTo(this.getQuantidade()) > 0; 
}

@Transient
public boolean isEstoqueInsuficiente() {
	return !this.isEstoqueSuficiente();
}

@Override
public int hashCode() {
	final int prime = 31;
	int result = 1;
	result = prime * result + ((compra == null) ? 0 : compra.hashCode());
	result = prime * result + ((id == null) ? 0 : id.hashCode());
	result = prime * result + ((produto == null) ? 0 : produto.hashCode());
	return result;
}

@Override
public boolean equals(Object obj) {
	if (this == obj)
		return true;
	if (obj == null)
		return false;
	if (getClass() != obj.getClass())
		return false;
	ItemCompra other = (ItemCompra) obj;
	if (compra == null) {
		if (other.compra != null)
			return false;
	} else if (!compra.equals(other.compra))
		return false;
	if (id == null) {
		if (other.id != null)
			return false;
	} else if (!id.equals(other.id))
		return false;
	if (produto == null) {
		if (other.produto != null)
			return false;
	} else if (!produto.equals(other.produto))
		return false;
	return true;
}

}

E

Faz o seguinte.

Tenta modificar a versão do teu Hibernate.

Veja: https://stackoverflow.com/questions/27452749/what-causes-java-lang-illegalargumentexception-can-not-set-java-lang-integer-f

Clean no projeto e roda novamente.

E

Por acaso o erro está nesta linha de código?

Você está usando um método save co sua implementação ou genérico ?

L

Já tentei com a versão do hibernate até a 5.0.14 e não funcionou. Vou tentar com essa do link que me mandou pra testar.

Sim, o erro está no momento de finalizar a devolução, no caso esse salvar aí, mais creio que é por causa da lista de itens pq quando eu não seto essa lista o save funciona normalmente.

E

Pode tentar também inserir na sua anotação do ID uma estratégia sequencial.

@Id

@GeneratedValue(strategy=GenerationType.SEQUENCE)

private Long id;
No meu caso utilizo desta forma.

@Id

@Column(name = ID)

@GeneratedValue(strategy=GenerationType.SEQUENCE, generator = id_Sequence)

@SequenceGenerator(name = id_Sequence, sequenceName = ID_SEQ)

private Long id;

Não acredito que o problema seja este pois o erro no console seria outro, mas é uma tentativa de solução.

L

@edumatias não vai dar pra testar com essa versão do hibernate, pois a versão do spring que deve se utilizar é antiga e da problema em outras partes do projeto. É um projeto grande, não da pra ficar mudando versões assim. Teremos que contornar a situação de outra forma.

E

Este erro geralmente acontece quando tentamos comparar diretamente no objeto um passando um id como parametro.

Veja: https://stackoverflow.com/questions/24693853/can-not-set-java-lang-integer-field-to-java-lang-integer

Note que na codificação errônea é tentado comparar o objeto user com um id

Query query = session.createQuery("from UserPattern where user = :user_id and pattern = :pattern_id ");

query.setParameter(user_id, userId);

query.setParameter(pattern_id, pattern_id);

Por isso a correção foi :
from UserPattern where user.id = :user_id and pattern.id = :pattern_id?

E esse foi o motivo que questionei se o método salvar foi implementação sua ou se simplesmente passava a lista para que o hibernate salve baseado nas anotações criadas para esta lista.

L

Ah sim, entendi. Mais não seria isso.

O Sequence também não funcionou :confused:

O problema está nessa linha de código.

this.devolucaoCompra.addItemDevolucaoCompra(ic);

//this.devolucaoCompra.setItensDevolucaoCompra(this.itensConfirmadosDevol);

Ambas dão o mesmo erro. Se eu não setar os itens ele cria no banco a devolução, data, empresa e tals tudo certinho. Mais preciso dos itens rsrs

E

Por desencargo de consciência, posta a sua classe ItemDevolucaoCompra e DevolucaoCompraServiceImpl

R

Vale ressaltar que a estratégia de auto incremento varia de banco para banco, pois nem todo banco suporta sequence, como o MYSQL, por exemplo.

E

Exato.

L
@Service

@Transactional(readOnly = false, rollbackFor=NegocioException.class)
public class DevolucaoCompraServiceImpl implements DevolucaoCompraService {

@Autowired
private DevolucaoCompraRepository devolucaoCompraRepository;

@Override
public List<DevolucaoCompra> findAll() {
	return this.devolucaoCompraRepository.findAll();
}

@Override
@Transactional
public DevolucaoCompra save(DevolucaoCompra devolucaoCompra) {
	
	if (devolucaoCompra.getItensDevolucaoCompra().isEmpty()) {
		throw new NegocioException("A devolução da compra deve possuir pelo menos um item devolvido.");
	}

	return this.devolucaoCompraRepository.saveAndFlush(devolucaoCompra);
}

}

package br.com.rfsolutionit.business.comercial.model;

import java.io.Serializable;
import java.math.BigDecimal;

import javax.persistence.Column;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import <a href="http://javax.persistence.Id">javax.persistence.Id</a>;

import javax.persistence.JoinColumn;

import javax.persistence.ManyToOne;

import javax.persistence.Transient;

import javax.validation.constraints.NotNull;

@Entity(name=“itemdevolucaocompra”)
public class ItemDevolucaoCompra implements Serializable{

private static final long serialVersionUID = 1L;

@Id
@GeneratedValue
private Long id;

@NotNull
@ManyToOne(targetEntity = DevolucaoCompra.class)
@JoinColumn(name = "devolucaoCompra_fk")
private DevolucaoCompra devolucaoCompra;

@NotNull
@ManyToOne(targetEntity = ItemCompra.class)
@JoinColumn(name = "itemCompra_fk")
private ItemCompra itemCompra;

@NotNull
@Column(precision = 12, scale = 4)
private BigDecimal valorUnitario = BigDecimal.ZERO;

@NotNull
@Column(precision = 12, scale = 4)
private BigDecimal quantidade = BigDecimal.ZERO;

public Long getId() {
	return id;
}

public void setId(Long id) {
	this.id = id;
}
		
public BigDecimal getValorUnitario() {
	return valorUnitario;
}

public void setValorUnitario(BigDecimal valorUnitario) {
	this.valorUnitario = valorUnitario;
}

public BigDecimal getQuantidade() {
	return quantidade;
}

public void setQuantidade(BigDecimal quantidade) {
	this.quantidade = quantidade;
}

public DevolucaoCompra getDevolucaoCompra() {
	return devolucaoCompra;
}

public void setDevolucaoCompra(DevolucaoCompra devolucaoCompra) {
	this.devolucaoCompra = devolucaoCompra;
}

public ItemCompra getItemCompra() {
	return itemCompra;
}

public void setItemCompra(ItemCompra itemCompra) {
	this.itemCompra = itemCompra;
}

@Transient
public BigDecimal getValorTotal() {
	BigDecimal total = new BigDecimal("0.00");
	total.setScale(2);
	total = this.getValorUnitario().multiply(this.getQuantidade()); 
	return total;
}

@Override
public int hashCode() {
	final int prime = 31;
	int result = 1;
	result = prime * result + ((devolucaoCompra == null) ? 0 : devolucaoCompra.hashCode());
	result = prime * result + ((id == null) ? 0 : id.hashCode());
	return result;
}

@Override
public boolean equals(Object obj) {
	if (this == obj)
		return true;
	if (obj == null)
		return false;
	if (getClass() != obj.getClass())
		return false;
	ItemDevolucaoCompra other = (ItemDevolucaoCompra) obj;
	if (devolucaoCompra == null) {
		if (other.devolucaoCompra != null)
			return false;
	} else if (!devolucaoCompra.equals(other.devolucaoCompra))
		return false;
	if (id == null) {
		if (other.id != null)
			return false;
	} else if (!id.equals(other.id))
		return false;
	return true;
}

}

E

Amigo,

@OneToMany(targetEntity = ItemCompra.class, fetch=FetchType.EAGER, cascade=CascadeType.ALL)

@JoinTable(name=devolucaocompra_itensdevolucaocompra, joinColumns = @JoinColumn(name = devolucaocompra_id), inverseJoinColumns = @JoinColumn(name = itensdevolucaocompra_id))

@OrderColumn(name=devolucaocompra)

private List itensDevolucaoCompra = new ArrayList();

Neste seu código, o targetEntity não deveria ser ItemDevolucaoCompra?

O targetEntity informa qual entidade estamos associando. Neste caso é ItemDevolucaoCompra.

Deverá ficar assim:

@OneToMany(targetEntity = ItemDevolucaoCompra.class, fetch=FetchType.EAGER, cascade=CascadeType.ALL)

Tente isso.

L

Bingooooooo, valeu cara, era isso mesmo.

Falta de atenção da minha parte, não foi eu que criei aquela entidade.

Muito obrigado, se eu pudesse te pagaria uma cerveja no bar hahaha

E

O famoso era do copiar e colar.

Que bom que funcionou.

Marque como resolvido e edite o título para [CONCLUÍDO]

Criado 10 de outubro de 2017
Ultima resposta 17 de out. de 2017
Respostas 17
Participantes 3