Error accessing field [RESOLVIDO]

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 br.com.rfsolutionit.business.comercial.model.ItemCompra.id] 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 br.com.rfsolutionit.business.comercial.model.ItemCompra.id] 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 br.com.rfsolutionit.business.comercial.model.ItemCompra.id] 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 br.com.rfsolutionit.business.comercial.model.ItemCompra.id] 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 br.com.rfsolutionit.business.comercial.model.ItemCompra.id] 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 br.com.rfsolutionit.business.comercial.model.ItemCompra.id] 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 br.com.rfsolutionit.business.comercial.model.ItemCompra.id] 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 br.com.rfsolutionit.business.comercial.model.ItemCompra.id 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

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

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

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;
}

}

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.

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

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

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.

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.

@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.

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.

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

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

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.

Exato.

@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 javax.persistence.Id;
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;
}

}

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.

1 curtida

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

O famoso era do copiar e colar.

Que bom que funcionou.

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