点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
大家好,
我们有一个要求,要求我们以xml的形式从其他系统接收父级和子级B2BUnit信息,并且需要创建父级B2BUnit和子级B2BUnits及其关系。
要创建子B2BUnit,我们使用B2BUnitService的addMember方法并使用模型服务保存该单元。 {Ref:Hybris Wiki
public void createSubB2BUnit(B2BUnitModel父级,列表 officeDetails){
用于(最终OfficeDetailsType officeDetail:officeDetails){
B2BUnitModel anOffice =(B2BUnitModel)getB2bUnitService()。getUnitForUid(officeDetail.getOfficeAccountNumber());
如果(anOffice == null){
anOffice = getModelService()。create(B2BUnitModel.class);
}
anOffice.setOfficeNumber(officeDetail.getOfficeNumber());
anOffice.setUid(officeDetail.getOfficeAccountNumber());
anOffice.setLocName(officeDetail.getOfficeName());
anOffice.setActive(officeDetail.isOfficeStatus());
anOffice.setGroups(Collections.EMPTY_SET);
b2bUnitService.addMember(parent,anOffice); //设置父项
this.modelService.save(unit);
}
}
(要么)
公共无效createSubB2BUnit(B2BUnitModel父级,列表 officeDetails){
最终List customerOffices = new ArrayList ();
用于(最终OfficeDetailsType officeDetail:officeDetails){
B2BUnitModel anOffice =(B2BUnitModel)getB2bUnitService()。getUnitForUid(officeDetail.getOfficeAccountNumber());
如果(anOffice == null){
anOffice = getModelService()。create(B2BUnitModel.class);
}
anOffice.setOfficeNumber(officeDetail.getOfficeNumber());
anOffice.setUid(officeDetail.getOfficeAccountNumber());
anOffice.setLocName(officeDetail.getOfficeName());
anOffice.setActive(officeDetail.isOfficeStatus());
anOffice.setGroups(Collections.EMPTY_SET);
b2bUnitService.addMember(parent,anOffice); //设置父项
customerOffices.add(anOffice);
}
this.modelService.saveAll(customerOffices);
}
当我们保存模型信息时,父级和子级单元信息都保存在数据库中,但是在将父级和子级B2BUnit信息保存到数据库后,我们将收到以下异常[注意:-如果b2bUnitService.addMember(parent, 那么anOffice)就不存在,只有当b2bUnitService.addMember(parent,anOffice)存在时,我们才不会出现下面的异常,我们看到了此异常]
我们需要addMember功能来创建父子关系。
请帮助我解决此问题? 还有其他方法可以解决此问题吗?
WARN [pool-2] [ConnectionImpl]连接5(-A)已关闭(线程:Thread [pool-2,5,main])
返回JDBC连接5(-A)的错误[pool-2] [JDBCConnectionPool]错误
java.lang.IllegalStateException:对象已经被释放到该池中或无效
在org.apache.commons.pool2.impl.GenericObjectPool.returnObject(GenericObjectPool.java:595)
在de.hybris.platform.jdbcwrapper.JDBCConnectionPool.returnConnection(JDBCConnectionPool.java:148)
在de.hybris.platform.jdbcwrapper.DataSourceImpl.returnToPool(DataSourceImpl.java:535)
在de.hybris.platform.jdbcwrapper.ConnectionImpl.close(ConnectionImpl.java:378)
在org.springframework.jdbc.datasource.DataSourceUtils.doCloseConnection(DataSourceUtils.java:341)
在org.springframework.jdbc.datasource.DataSourceUtils.doReleaseConnection(DataSourceUtils.java:328)
在org.springframework.jdbc.datasource.DataSourceUtils.releaseConnection(DataSourceUtils.java:294)
在org.springframework.jdbc.datasource.DataSourceUtils $ ConnectionSynchronization.beforeCompletion(DataSourceUtils.java:460)处
在org.springframework.transaction.support.TransactionSynchronizationUtils.triggerBeforeCompletion(TransactionSynchronizationUtils.java:106)处
在org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerBeforeCompletion(AbstractPlatformTransactionManager.java:938)处
在org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:739)
在org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:724)
在org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:475)处
在org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:270)
在org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:94)
在org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
在org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
com.sun.proxy。$ Proxy59.call(未知来源)
在org.springframework.integration.endpoint.AbstractPollingEndpoint $ Poller $ 1.run(AbstractPollingEndpoint.java:273)
在org.springframework.integration.util.ErrorHandlingTaskExecutor $ 1.run(ErrorHandlingTaskExecutor.java:52)
在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
在java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:615)
在java.lang.Thread.run(Thread.java:745)
而不是仅使用帐号检索..使用完整模型检索。 B2BUnitModel anOffice =(B2BUnitModel)getB2bUnitService()。getUnitForUid(officeDetail.getOfficeAccountNumber());
可能是这样
遇到相同的问题,您是否设法解决了该问题或找到了根本原因
感谢Vinay的回复 和建议。
第一次收到创建父B2B单位和子单位的请求时,子单位在数据库中不可用,因此在下一行,我们总是将B2BUnitModel设为null。 仅对于后续请求,它将从数据库中获取数据,但就我而言,这是第一次,请求本身遇到上述错误。
一周热门 更多>