Hybris java.lang.IllegalArgumentException:无效pks[10]-未知类型代码0

Hybris java.lang.IllegalArgumentException:无效pks[10]-未知类型代码0,hybris,Hybris,我试图从DAO层启动灵活的搜索查询。我的问题类似于: SELECT {loyaltypoints},{redeemedloyaltypoints} FROM {LoyaltyUser} WHERE {uid} =?uid 正在向我抛出未知类型代码,但我的类型代码是正确的。我看到堆栈跟踪消息如下 SEVERE: Servlet.service() for servlet [DispatcherServlet] in context with path [/store] threw exce

我试图从DAO层启动灵活的搜索查询。我的问题类似于:

SELECT {loyaltypoints},{redeemedloyaltypoints}  
FROM {LoyaltyUser} 
WHERE {uid} =?uid
正在向我抛出未知类型代码,但我的类型代码是正确的。我看到堆栈跟踪消息如下

SEVERE: Servlet.service() for servlet [DispatcherServlet] in context with path [/store]
threw exception [Request processing failed; nested exception is java.lang.IllegalArgumentException:
    invalid pks [10] - unknown typecode 0] with root cause
    java.lang.IllegalArgumentException: invalid pks [10] - unknown typecode 0
    at de.hybris.platform.core.WrapperFactory.getCachedItems(WrapperFactory.java:304)
    at de.hybris.platform.core.LazyLoadItemList.loadPage(LazyLoadItemList.java:230)
    at de.hybris.platform.servicelayer.search.impl.LazyLoadModelList.loadPage(LazyLoadModelList.java)"
My items.xml看起来像:

<itemtype code="LoyaltyUser" extends="Customer" autocreate="true" generate="true"
    jaloclass="de.hybris.merchandise.core.jalo.LoyaltyUser">
    <deployment table="LoyaltyUsers" typecode="10010"/>
    <attributes>
        <attribute generate="true" autocreate="true" qualifier="loyaltypoints" type="java.lang.Integer" >
            &ltdescription&gtLoyalty points given for each purchase&lt/description&gt
            <modifiers read="true" write="true" search="true" optional="true" />
            <defaultvalue>Integer.valueOf(0)</defaultvalue>
            <persistence type="property"/>
        </attribute>
        <attribute generate="true" autocreate="true" qualifier="redeemedloyaltypoints" type="java.lang.Integer" >
            <description>Redeemed Loyalty points For a customer</description>
            <modifiers read="true" write="true" search="true" optional="true" />
            <defaultvalue>Integer.valueOf(0)</defaultvalue>
            <persistence type="property"/>
        </attribute>
    </attributes>
</itemtype>

有人能帮我解决这个问题吗?

与其在查询中获得两个属性{loyaltypoints},{reductedloyaltypoints},不如获得你的忠诚用户模型的PK

从{LoyaltyUser}中选择{pk},其中{uid}=?uid

查询将提供LoyaltyUserModel,然后您可以通过getter方法获取其属性

Integer loyalyPoint = loyaltyUserModel.getLoyaltypoints()
Integer redeemedLoyaltyPoint = loyaltyUserModel.getRedeemedloyaltypoints()

你试过调试这个吗?您能提供完整灵活的查询字符串吗?您的查询返回类型是什么?如果您希望返回LoyaltyUser实例,您可能必须包含{pk}才能返回实际的LoyaltyUser项,现在您只选择两个整数。在flexi search中添加pk后工作正常,但在此处添加pk的原因是什么。