我正在创建一个Hybris impex文件以导入我的数据库.
我想用文件中的数据执行INSERT_UPDATE操作,所以我需要告诉Hybris哪些列需要是唯一的,以便它知道何时更新记录而不是插入它.
我知道要告诉Hybris某个列需要是唯一的,我可以将唯一属性添加到该列,如下所示:
INSERT_UPDATE SLEmployee;Firstname[unique=true, required=true];Lastname[required=true];Function;
Run Code Online (Sandbox Code Playgroud)
但是根据我上面的例子,我怎么告诉Hybris Firstname + Lastname列的组合必须是唯一的?
在hybris中,是否有一种简单的方法可以知道哪个实现类正在用于某个Spring bean?
我的意思是,我可以通过执行以下操作来覆盖Bean:
<alias name="myCheckoutFacade" alias="checkoutFacade"/>
<bean id="myCheckoutFacade" class="com.pedra.facades.checkout.impl.MyCheckoutFacadeImpl" scope="tenant" parent="defaultCheckoutFacade">
<property name="commerceCheckoutService" ref="myCommerceCheckoutService"/>
</bean>
Run Code Online (Sandbox Code Playgroud)
...所以现在当Spring需要使用别名创建一个bean时,checkoutFacade
实现类将MyCheckoutFacadeImpl
与defaultCheckoutFacade
其他一些xml配置文件中定义的重写相反.
那么有没有办法在运行时知道哪个实现类被用于某个Spring bean定义?不用调试代码,我的意思是.
我正在Hybris项目的门面层面编写测试用例.我正在创建模型实例并设置名称和代码.模型有一些属性本地化,因为我得到了no LocaleProvider
异常.
java.lang.IllegalStateException: there is no LocaleProvider for (detached) model de.hybris.platform.servicelayer.model.ItemModelContextImpl@66c677a7
at de.hybris.platform.servicelayer.model.ItemModelContextImpl.getLocaleProvider(ItemModelContextImpl.java:481)
at de.hybris.platform.servicelayer.model.ItemModelContextImpl.getCurrentLocale(ItemModelContextImpl.java:469)
at de.hybris.platform.servicelayer.model.ItemModelContextImpl.toDataLocale(ItemModelContextImpl.java:406)
at de.hybris.platform.servicelayer.model.ItemModelContextImpl.getLocalizedValue(ItemModelContextImpl.java:323)
at de.hybris.platform.catalog.model.classification.ClassificationAttributeModel.getName(ClassificationAttributeModel.java:227)
at de.hybris.platform.catalog.model.classification.ClassificationAttributeModel.getName(ClassificationAttributeModel.java:217)
Run Code Online (Sandbox Code Playgroud)
这是一个测试类
@RunWith(PowerMockRunner.class)
@PrepareForTest({ Locale.class, Config.class })
public class HCCB2BClassificationFacadeUnitTest {
@InjectMocks
private final HCCB2BClassificationFacade hccb2bClassificationFacade = new HCCB2BClassificationFacadeImpl();
@Mock
HCCB2BClassificationService hccb2bClassificationService = new HCCB2BClassificationServiceImpl();
@Mock
private SessionService sessionService;
@Mock
private HCCB2BClassificationDAO hccb2bClassificationDAO;
@Mock
private SearchRestrictionService searchRestrictionService;
@Before
public void setUp() throws SystemException {
MockitoAnnotations.initMocks(this);
ClassAttributeAssignmentModel classAttributeAssignmentModel = new ClassAttributeAssignmentModel();
ClassificationAttributeModel classificationAttributeModel = new ClassificationAttributeModel();
classificationAttributeModel.setCode("Procedure"); …
Run Code Online (Sandbox Code Playgroud) 我认为Default Extension
可以封装业务逻辑,类型定义,配置和添加.
我知道这Add On
也是一种 Extensions
延伸正常扩展.
我进一步知道Add Ons扩展功能而不涉及CODE Base.
来自Hybris专家的任何意见都得到了高度赞赏.
是否可以从local.properties配置文件中定义的环境变量中获取值并通过impex文件访问它?
防爆.
$someMacro=<some variable from config>
Run Code Online (Sandbox Code Playgroud)
谢谢!
我创建了一个Jenkins管道工作.在这项工作中,我想使用Ant进行构建.我在Manage **Jenkins > Global Tool Configuration**
as中配置了Ant变量Ant1.9.1= D:\path_to_hybris\hybris\bin\platform\apache-ant-1.9.1
.
在自由式jenkins Job中,我知道build.xml位置可以在下面的屏幕截图中指定:
但是我无法理解如何在此之后指定ant groovy脚本,特别是在哪里可以提到build.xml文件的路径:
def antHome = tool 'Ant1.9.1'
????
????
Run Code Online (Sandbox Code Playgroud) 出于某种原因,我们需要运行数据库本机查询而不是灵活的查询.为了运行这些查询,我们需要数据库连接,所以我们如何从Hybris获取jdbcTemplate或DataSource对象.
我想合并catetegory_id
和subCategory_id
成一列。但是我不知道如何在灵活的查询中做到这一点。下面的代码是我想要做的
SELECT * FROM
(SELECT
ccr.targetpk as pk
FROM
Categories cc
JOIN Cat2CatRel ccr ON cc.pk = ccr.sourcepk
WHERE cc.p_code = '0106')
UNION SELECT CATE.pk as pk FROM CATEGORIES cate WHERE CATE.p_code = '0106'
Run Code Online (Sandbox Code Playgroud)
我需要一个与上述代码相同的灵活查询。
我创建了一个完美运行的 CronJob。但我想在此生成电子邮件的发送Cronjob
。我跟着网上的教程。我从创建 itemType 开始ProductsApprovedEmailProcess
。
然后我创建productsApprovedEmailProcess
定义流程引擎执行的步骤如下
然后我添加了一个EmailContext
来保存要传递给电子邮件模板的数据,如下所示
public class ProductsApprovedEmailContext extends CustomerEmailContext
{
private String message;
@Override
public void init(final StoreFrontCustomerProcessModel processModel, final EmailPageModel emailPageModel)
{
super.init(processModel, emailPageModel);
if (processModel instanceof ProductsApprovedEmailProcessModel)
{
setMessage(((ProductsApprovedEmailProcessModel) processModel).getMessage());
}
}
public String getMessage()
{
return message;
}
public void setMessage(final String message)
{
this.message = message;
}
}
Run Code Online (Sandbox Code Playgroud)
我ProductsApprovedEmailContext
在 Spring 中注册为 bean,如下所示
<bean id="productsApprovedEmailContext" class="com.hybris.training.facades.process.email.context.ProductsApprovedEmailContext"
parent="abstractEmailContext"
scope="prototype" >
</bean>
Run Code Online (Sandbox Code Playgroud)
然后我创建了 2 个 …
通过运行我的 hybris 服务器,我遇到了这个问题。到目前为止,网络上没有提及,任何可能导致这种情况以及如何解决的想法?
ERROR: Solr home directory C:\Projects\Beiselen\hybris\config\solr\instances\default must contain solr.xml
Mar 16, 2020 12:19:05 PM de.hybris.platform.solr.controller.commands.StartSolrServersCommand apply
SEVERE: Failed to start Solr server for instance [name: default, hostname: localhost, port: 8983, mode: STANDALONE]
de.hybris.platform.solr.controller.SolrControllerException: Failed to start Solr server for instance [name: default, hostname: localhost, port: 8983, mode: STANDALONE]
at de.hybris.platform.solr.controller.commands.StartSolrServerCommand.startSolrServer(StartSolrServerCommand.java:144)
at de.hybris.platform.solr.controller.commands.StartSolrServerCommand.executeCommand(StartSolrServerCommand.java:115)
Run Code Online (Sandbox Code Playgroud)