无法在impex上导入我在代码上创建的作业(hybris)

时间:2018-05-03 11:46:25

标签: dynamic hybris

我遵循了教程https://www.stackextend.com/hybris/everything-about-cronjobs-in-hybris-part-2/

但我使用customerlist参数代替字符串。那样:

    <attribute qualifier="customers" type="CustomersList">
                <modifiers read="true" write="true" initial="false" optional="true" partof="true"/>
                <persistence type="jalo"/>//i changed this to  dynamic, because jalo gives error
            </attribute>
我在

中定义的

 <collectiontype code="CustomersList" elementtype="Customer" autocreate="true" generate="true" type="list"/>

在教程的底部,它说导入那些

INSERT_UPDATE ServicelayerJob   ;code[unique=true]  ;springId


INSERT_UPDATE HelloWorldCronJob ;code[unique=true]  ;job(code)      ;firstName
                                ;helloWorldCronJob  ;helloWorldJob  ;Mouad

我首先导入并且成功了。

但是第二,我应该改变,因为我不再拥有那个名字区域了。我把它改成了客户名单所以我应该使用另一件事。我也尝试将其设为空,但错误始终相同:

  

,,,,第2行:无法使用值创建UsersFindCronJob   ItemAttributeMap [registry:null,type:,data:   {code = usersFindCronJob,job = usersFindJob(8796094628340)}]由于   找不到spring bean [UsersFindCronJob_customersAttributeHandler]   从动态属性[UsersFindCronJob.customers]配置   extension [trainingcore],第3行:无法创建UsersFindCronJob   values ItemAttributeMap [registry:null,type:,data:   {code = usersFindCronJob,job = usersFindJob(8796094628340)}]由于   找不到spring bean [UsersFindCronJob_customersAttributeHandler]   从动态属性[UsersFindCronJob.customers]配置   extension [trainingcore]; usersFindCronJob; usersFindJob; Zohan

导致错误的示例导入:

INSERT_UPDATE UsersFindCronJob;code[unique=true];job(code);customers
;usersFindCronJob;usersFindJob;testcustomerbutthisisnotcustomerthisisstring

我该怎么办?

2 个答案:

答案 0 :(得分:2)

不推荐使用Collectiontypes。喜欢关系。

<relations>
    <relation code="UsersFindCronJob2CustomerRelation" localized="false" >
        <sourceElement type="UsersFindCronJob" cardinality="many" qualifier="usersFindCronJob" />
        <targetElement type="Customer" cardinality="many" qualifier="customer" />
    </relation>
</relations>

然后您可以导入这样的cronjob:

INSERT_UPDATE UsersFindCronJob;code[unique=true];job(code);customer(uid)
;usersFindCronJob;usersFindJob;myCustomerUid1, myCustomerUid2, myCustomerUid3

答案 1 :(得分:1)

如果持久性类型是动态的:

<persistence type="dynamic"/>

然后你需要创建一个Spring bean,它应该负责根据其他持久属性来计算动态值

动态属性的示例可以是Customer的全名,即 可以通过以下方式连接来计算:名字 + 姓氏其中名字姓氏是存储在数据库中的两个属性(持久性类型=“属性”)

如果您希望将您的属性存储在数据库中(并且我相信这是指示的),那么您应该将持久性类型设置为 属性 而不是动态:

<persistence type="property"/>