我遵循了教程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
我该怎么办?
答案 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"/>