我想实现自己的ProductImpl而不是创建扩展ProductImpl的新类,而是想用我自己的实现替换现有的ProductImpl

这里的事情是,我在BLC_PRODUCT表中另外添加了两列。现在,我想重新设计包含这两列的ProductImpl类。

因此,我编写了一个名为MyProductImpl的类,它看起来像这样。

@Entity
@Table(name = "BLC_PRODUCT")
@Inheritance(strategy = InheritanceType.JOINED)
//multi-column indexes don't appear to get exported correctly when declared at the field level, so declaring here as a workaround
@org.hibernate.annotations.Table(appliesTo = "BLC_PRODUCT", indexes = {
  @Index(name = "PRODUCT_URL_INDEX",
          columnNames = {"URL","URL_KEY"}
  )
})
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE, region="blProducts")
@AdminPresentationClass(populateToOneFields = PopulateToOneFieldsEnum.TRUE, friendlyName = "baseProduct")
@SQLDelete(sql="UPDATE BLC_PRODUCT SET ARCHIVED = 'Y' WHERE PRODUCT_ID = ?")
@DirectCopyTransform({
      @DirectCopyTransformMember(templateTokens = DirectCopyTransformTypes.SANDBOX, skipOverlaps=true),
      @DirectCopyTransformMember(templateTokens = DirectCopyTransformTypes.SANDBOX_PRODUCT_INVOKE),
      @DirectCopyTransformMember(templateTokens = DirectCopyTransformTypes.MULTITENANT_CATALOG)
})
public class MyProductImpl implements Product, Status, AdminMainEntity, Locatable
{
// all the code from ProductImpl pasted here..
@Column(name="MY_CLASS_ID")
@ManyToOne(targetEntity = MyClass.class)
protected MyClass myclass;

@Column(name="MY_CLAZZ_ID")
@ManyToOne(targetEntity = MyClazz.class)
protected MyClazz myclazz;

}


在这里,当我通过管理界面创建新产品时,不会调用setter方法,但是会注入值(除了我的其他字段)。
这些附加字段的值实际上应该在内部插入程序中,而不是直接从用户输入。我该怎么办?

提前致谢。

最佳答案

我假设您使用的是boradleaf3.1.x。

因此,我将简要介绍一下如何从后端注入自定义关系。

您可以举一个例子org.broadleafcommerce.admin.server.service.handler.SkuCustomPersistenceHandler

您应该实现所需的方法,例如:org.broadleafcommerce.admin.server.service.handler.SkuCustomPersistenceHandler#canHandleAdd
要么
org.broadleafcommerce.admin.server.service.handler.SkuCustomPersistenceHandler#canHandleUpdate

之后,您应该实现以下方法:

org.broadleafcommerce.admin.server.service.handler.SkuCustomPersistenceHandler#add


org.broadleafcommerce.admin.server.service.handler.SkuCustomPersistenceHandler#update

如果这不是您想要的,请随时询问其他详细信息。

07-24 12:51