Java 未找到 Hybris 实体异常

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/24101640/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-14 10:09:55  来源:igfitidea点击:

Hybris Entity not found exception

javaspringspring-mvchybris

提问by Ryan

We have a rather major issue in our hybris implementation with missing data base entires. We have been getting "Entity Not Found" errors. It started rather randomly on last Monday. The records that are causing errors are in the database and we can use flexi-search to find them, however many of them throw 4 or 5 errors in a row. We did a build with and Update Running System, however it did not solve the issue. Most of the errors are thrown btgresults and cartentries. We cannot recreated the issue in our staging or development systems. Here is a example of the errors in the logs:

在我们的 hybris 实现中,我们有一个相当大的问题,缺少数据库整体。我们一直收到“未找到实体”错误。它在上周一开始相当随机。导致错误的记录在数据库中,我们可以使用 flexi-search 来查找它们,但是其中许多记录会连续抛出 4 或 5 个错误。我们使用并更新运行系统进行了构建,但是它没有解决问题。大多数错误都被抛出 btgresults 和 carentries。我们无法在我们的登台或开发系统中重现该问题。以下是日志中错误的示例:

6:41:35.587 PM  
INFO | jvm 1 | main | 2014/06/07 22:41:35.587 | [mde.hybris.platform.util.jeeapi.YNoSuchEntityException: Entity not found ( pk = 8847902804326 name = 'de.hybris.platform.persistence.btg_BTGAbstractResult' type code = '2406' db table = 'btgresult')
host = sop-p-ma-app-002
source = /opt/hybris/log/tomcat/console-20140607.log
sourcetype = java_console
    6/7/14 
6:41:06.253 PM  
INFO | jvm 1 | main | 2014/06/07 22:41:06.253 | [mde.hybris.platform.util.jeeapi.YNoSuchEntityException: Entity not found ( pk = 8847902411110 name = 'de.hybris.platform.persistence.btg_BTGAbstractResult' type code = '2406' db table = 'btgresult')
host = sop-p-ma-app-002
source = /opt/hybris/log/tomcat/console-20140607.log
sourcetype = java_console
    6/7/14 
6:41:06.051 PM  
INFO | jvm 1 | main | 2014/06/07 22:41:06.051 | [mde.hybris.platform.util.jeeapi.YNoSuchEntityException: Entity not found ( pk = 8847902345574 name = 'de.hybris.platform.persistence.btg_BTGAbstractResult' type code = '2406' db table = 'btgresult')
host = sop-p-ma-app-002
source = /opt/hybris/log/tomcat/console-20140607.log
sourcetype = java_console
    6/7/14 
6:40:50.233 PM  
INFO | jvm 1 | main | 2014/06/07 22:40:50.233 | [mde.hybris.platform.util.jeeapi.YNoSuchEntityException: Entity not found ( pk = 8832652476459 name = 'de.hybris.platform.persistence.core_Cart' type code = '43' db table = 'carts')
host = sop-p-ma-app-002
source = /opt/hybris/log/tomcat/console-20140607.log
sourcetype = java_console
    6/7/14 
6:40:50.032 PM  
INFO | jvm 1 | main | 2014/06/07 22:40:50.032 | [mde.hybris.platform.util.jeeapi.YNoSuchEntityException: Entity not found ( pk = 8832652443691 name = 'de.hybris.platform.persistence.core_Cart' type code = '43' db table = 'carts')
host = sop-p-ma-app-002
source = /opt/hybris/log/tomcat/console-20140607.log
sourcetype = java_console
    6/7/14 
6:40:49.930 PM  
INFO | jvm 1 | main | 2014/06/07 22:40:49.930 | [mde.hybris.platform.util.jeeapi.YNoSuchEntityException: Entity not found ( pk = 8832652410923 name = 'de.hybris.platform.persistence.core_Cart' type code = '43' db table = 'carts')
host = sop-p-ma-app-002
source = /opt/hybris/log/tomcat/console-20140607.log
sourcetype = java_console

And a stack trace from on of the errors:

以及来自错误的堆栈跟踪:

HTTP Status 500 - Entity not found ( pk = 8847703804262 name = 'de.hybris.platform.persistence.btg_BTGAbstractResult' type code = '2406' db table = 'btgresult')
type Exception report
message Entity not found ( pk = 8847703804262 name = 'de.hybris.platform.persistence.btg_BTGAbstractResult' type code = '2406' db table = 'btgresult')
description The server encountered an internal error that prevented it from fulfilling this request.
exception
de.hybris.platform.util.jeeapi.YNoSuchEntityException: Entity not found ( pk = 8847703804262 name = 'de.hybris.platform.persistence.btg_BTGAbstractResult' type code = '2406' db table = 'btgresult')
 de.hybris.platform.persistence.GenericBMPBean.loadData(GenericBMPBean.java:259)
 de.hybris.platform.persistence.GenericBMPBean.ejbLoad(GenericBMPBean.java:148)
 de.hybris.platform.persistence.framework.RemoteInvocationHandler.performOther(RemoteInvocationHandler.java:187)
 de.hybris.platform.persistence.framework.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:107)
 com.sun.proxy.$Proxy45.getModifiedTime(Unknown Source)
 de.hybris.platform.persistence.ItemEJBImpl.getModificationTime(ItemEJBImpl.java:142)
 de.hybris.platform.jalo.Item.getModificationTimeFromPersistenceLayer(Item.java:1516)
 de.hybris.platform.jalo.Item.getLocalItemCache(Item.java:1387)
 de.hybris.platform.jalo.Item.getGetterSetterCache(Item.java:1397)
 de.hybris.platform.jalo.Item.access(Item.java:1395)
 de.hybris.platform.jalo.Item$CacheableItemLogic.getCacheMap(Item.java:542)
 de.hybris.platform.jalo.Item$CachedGetter.get(Item.java:668)
 de.hybris.platform.jalo.Item$CachedGetter.get(Item.java:655)
 de.hybris.platform.jalo.Item.getPersistenceVersion(Item.java:1534)
 de.hybris.platform.servicelayer.internal.converter.impl.ItemModelConverter.save(ItemModelConverter.java:630)
 de.hybris.platform.servicelayer.internal.model.impl.ModelWrapper.save(ModelWrapper.java:149)
 de.hybris.platform.servicelayer.internal.model.impl.ResolvingModelPersister.saveNewOnes(ResolvingModelPersister.java:127)
 de.hybris.platform.servicelayer.internal.model.impl.ResolvingModelPersister.persist(ResolvingModelPersister.java:95)
 de.hybris.platform.servicelayer.internal.model.impl.DefaultModelService.saveAllInternal(DefaultModelService.java:1103)
 de.hybris.platform.servicelayer.internal.model.impl.DefaultModelService.saveAll(DefaultModelService.java:1090)
 de.hybris.platform.servicelayer.internal.model.impl.DefaultModelService.save(DefaultModelService.java:735)
 de.hybris.platform.btg.dao.impl.DefaultBTGDao.createConditionResult(DefaultBTGDao.java:318)
 de.hybris.platform.btg.dao.impl.ResultCachingBTGDaoDecorator.createConditionResult(ResultCachingBTGDaoDecorator.java:241)
 de.hybris.platform.btg.condition.impl.DefaultBTGExpressionEvaluator.setConditionResultAfterEvaluation(DefaultBTGExpressionEvaluator.java:222)
 de.hybris.platform.btg.condition.impl.DefaultBTGExpressionEvaluator.evaluate(DefaultBTGExpressionEvaluator.java:142)
 de.hybris.platform.btg.condition.impl.DefaultBTGExpressionEvaluator.evaluate(DefaultBTGExpressionEvaluator.java:1)
 de.hybris.platform.btg.rule.impl.DefaultRuleEvaluator.evaluate(DefaultRuleEvaluator.java:109)
 de.hybris.platform.btg.segment.impl.DefaultSegmentEvaluator.evaluate(DefaultSegmentEvaluator.java:124)
 de.hybris.platform.btg.services.impl.DefaultBTGEvaluationService.evaluateSegment(DefaultBTGEvaluationService.java:105)
 de.hybris.platform.btg.services.impl.DefaultBTGEvaluationService.evaluateAllSegments(DefaultBTGEvaluationService.java:80)
 de.hybris.platform.btg.services.impl.DefaultBTGEvaluationService.evaluateAllSegments(DefaultBTGEvaluationService.java:62)
 de.hybris.platform.btg.services.impl.DefaultBTGEvaluationService.evaluateAllSegments(DefaultBTGEvaluationService.java:55)
 com.so.storefront.filters.btg.support.impl.DefaultBTGSegmentStrategy.evaluateSegment(DefaultBTGSegmentStrategy.java:98)
 com.so.storefront.filters.btg.BTGSegmentFilter.doFilterInternal(BTGSegmentFilter.java:48)
 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
 de.hybris.platform.servicelayer.web.AbstractPlatformFilterChain$InternalFilterChain.doFilter(AbstractPlatformFilterChain.java:226)
 com.so.storefront.filters.btg.AbstractBtgFilter.doFilterInternal(AbstractBtgFilter.java:57)
 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
 de.hybris.platform.servicelayer.web.AbstractPlatformFilterChain$InternalFilterChain.doFilter(AbstractPlatformFilterChain.java:226)
 com.so.storefront.filters.btg.AbstractBtgFilter.doFilterInternal(AbstractBtgFilter.java:57)
 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
 de.hybris.platform.servicelayer.web.AbstractPlatformFilterChain$InternalFilterChain.doFilter(AbstractPlatformFilterChain.java:226)
 com.so.storefront.filters.btg.AbstractBtgFilter.doFilterInternal(AbstractBtgFilter.java:57)
 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
 de.hybris.platform.servicelayer.web.AbstractPlatformFilterChain$InternalFilterChain.doFilter(AbstractPlatformFilterChain.java:226)
 com.so.storefront.filters.btg.AbstractBtgFilter.doFilterInternal(AbstractBtgFilter.java:57)
 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
 de.hybris.platform.servicelayer.web.AbstractPlatformFilterChain$InternalFilterChain.doFilter(AbstractPlatformFilterChain.java:226)
 com.so.storefront.filters.CrossScriptingFilter.doFilterInternal(CrossScriptingFilter.java:36)
 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
 de.hybris.platform.servicelayer.web.AbstractPlatformFilterChain$InternalFilterChain.doFilter(AbstractPlatformFilterChain.java:226)
 com.so.storefront.filters.SpecialAccountsFilter.doFilterInternal(SpecialAccountsFilter.java:470)
 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
 de.hybris.platform.servicelayer.web.AbstractPlatformFilterChain$InternalFilterChain.doFilter(AbstractPlatformFilterChain.java:226)
 com.so.storefront.filters.CustomerLocationRestorationFilter.doFilterInternal(CustomerLocationRestorationFilter.java:63)
 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
 de.hybris.platform.servicelayer.web.AbstractPlatformFilterChain$InternalFilterChain.doFilter(AbstractPlatformFilterChain.java:226)
 com.so.storefront.filters.CartRestorationFilter.doFilterInternal(CartRestorationFilter.java:133)
 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
 de.hybris.platform.servicelayer.web.AbstractPlatformFilterChain$InternalFilterChain.doFilter(AbstractPlatformFilterChain.java:226)
 com.so.storefront.filters.AnonymousCheckoutFilter.doFilterInternal(AnonymousCheckoutFilter.java:62)
 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
 de.hybris.platform.servicelayer.web.AbstractPlatformFilterChain$InternalFilterChain.doFilter(AbstractPlatformFilterChain.java:226)
 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
 org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118)
 org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)
 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
 org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
 org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113)
 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
 org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:139)
 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
 org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
 org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45)
 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
 org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:183)
 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
 org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
 org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
 org.springframework.security.web.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:144)
 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
 org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192)
 org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160)
 de.hybris.platform.servicelayer.web.AbstractPlatformFilterChain$InternalFilterChain.doFilter(AbstractPlatformFilterChain.java:226)
 com.so.storefront.filters.UrlEncoderFilter.doFilterInternal(UrlEncoderFilter.java:100)
 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
 de.hybris.platform.servicelayer.web.AbstractPlatformFilterChain$InternalFilterChain.doFilter(AbstractPlatformFilterChain.java:226)
 com.so.storefront.filters.StorefrontFilter.doFilterInternal(StorefrontFilter.java:73)
 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
 de.hybris.platform.servicelayer.web.AbstractPlatformFilterChain$InternalFilterChain.doFilter(AbstractPlatformFilterChain.java:226)
 com.so.storefront.filters.cms.CMSSiteFilter.doFilterInternal(CMSSiteFilter.java:108)
 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
 de.hybris.platform.servicelayer.web.AbstractPlatformFilterChain$InternalFilterChain.doFilter(AbstractPlatformFilterChain.java:226)
 com.so.storefront.filters.RequestLoggerFilter.doFilterInternal(RequestLoggerFilter.java:79)
 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
 de.hybris.platform.servicelayer.web.AbstractPlatformFilterChain$InternalFilterChain.doFilter(AbstractPlatformFilterChain.java:226)
 com.so.storefront.filters.AcceleratorAddOnFilter.doFilter(AcceleratorAddOnFilter.java:92)
 de.hybris.platform.servicelayer.web.AbstractPlatformFilterChain$InternalFilterChain.doFilter(AbstractPlatformFilterChain.java:226)
 de.hybris.platform.servicelayer.web.SessionFilter.doFilter(SessionFilter.java:73)
 de.hybris.platform.servicelayer.web.AbstractPlatformFilterChain$InternalFilterChain.doFilter(AbstractPlatformFilterChain.java:226)
 de.hybris.platform.servicelayer.web.AbstractPlatformFilterChain.doFilterInternal(AbstractPlatformFilterChain.java:156)
 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
 com.so.storefront.filters.UrlPathFilter.doFilterInternal(UrlPathFilter.java:85)
 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
 org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
 org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
 de.hybris.platform.servicelayer.web.AbstractPlatformFilterChain$InternalFilterChain.doFilter(AbstractPlatformFilterChain.java:256)
 de.hybris.platform.servicelayer.web.AbstractPlatformFilterChain$StatisticsGatewayFilter.doFilter(AbstractPlatformFilterChain.java:345)
 de.hybris.platform.servicelayer.web.AbstractPlatformFilterChain$InternalFilterChain.doFilter(AbstractPlatformFilterChain.java:226)
 de.hybris.platform.servicelayer.web.RedirectWhenSystemIsNotInitializedFilter.doFilter(RedirectWhenSystemIsNotInitializedFilter.java:104)
 de.hybris.platform.servicelayer.web.AbstractPlatformFilterChain$InternalFilterChain.doFilter(AbstractPlatformFilterChain.java:226)
 de.hybris.platform.servicelayer.web.TenantActivationFilter.doFilter(TenantActivationFilter.java:91)
 de.hybris.platform.servicelayer.web.AbstractPlatformFilterChain$InternalFilterChain.doFilter(AbstractPlatformFilterChain.java:226)
 de.hybris.platform.servicelayer.web.Log4JFilter.doFilter(Log4JFilter.java:47)
 de.hybris.platform.servicelayer.web.AbstractPlatformFilterChain$InternalFilterChain.doFilter(AbstractPlatformFilterChain.java:226)
 de.hybris.platform.servicelayer.web.AbstractPlatformFilterChain.doFilterInternal(AbstractPlatformFilterChain.java:156)
 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
 org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
 org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
 org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
 com.so.storefront.filters.AcceleratorAddOnFilter.doFilter(AcceleratorAddOnFilter.java:92)
 org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
 org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.36 logs.

UPDATE: Just some new information, the Errors always seem to occur right as that the record is being created. Is it possible that there is some latency in our database and the record is successfully created but it isn't returned to the application?

更新:只是一些新信息,错误似乎总是在创建记录时发生。我们的数据库中是否可能存在一些延迟并且记录已成功创建但未返回到应用程序?

Also the error always appears in de.hybris.platform.persistence.GenericBMPBean.loadData(GenericBMPBean.java:259) not sure if this is intact where the error starts of if something else in the stack is calling this wrong however the documentation for GenericBMPBean is pretty clear. "Entity not found" means there is no item for a given pk. Am I wrong in assuming that according to the DB this record doesn't exist? whether because of latency or a DB error.

此外,错误总是出现在 de.hybris.platform.persistence.GenericBMPBean.loadData(GenericBMPBean.java:259) 不确定这是否完整,如果堆栈中的其他东西正在调用这个错误,那么错误开始的地方是否完整,但是 GenericBMPBean 的文档很清楚。“未找到实体”表示给定的 pk 没有项目。我是否错误地假设根据数据库该记录不存在?无论是因为延迟还是数据库错误。

The record does exist and infact was created in the same stack trace that throws the error.

该记录确实存在,并且事实上是在引发错误的同一堆栈跟踪中创建的。

采纳答案by Ryan

It turned out this had nothing to do with code or configuration. It was a database error. While our managed services partner was not seeing any errors in their diagnostics, a restart of the database fixed the issue.

结果证明这与代码或配置无关。这是一个数据库错误。虽然我们的托管服务合作伙伴在他们的诊断中没有发现任何错误,但重启数据库解决了这个问题。

回答by Vinay Chowdary Malempati

Please try to clear all orphaned types by using your hybris hac>Maintenance>Cleanup>

请尝试使用您的 hybris hac>Maintenance>Cleanup> 清除所有孤立类型

回答by Vinay Chowdary Malempati

Your problem is that you are using BTG. Stop that.

你的问题是你使用的是BTG。停下。

But the issue you are seeing there is a result of stale region cache. Clear your caches or restart.

但是您看到的问题是陈旧的区域缓存的结果。清除缓存或重新启动。

回答by Sahbi

You might also need to update your system : hac > platform > update

您可能还需要更新您的系统:hac > platform > update