java - 如何在Broadleaf中实现自己的ProductImpl?

标签 java hibernate jpa broadleaf-commerce

我想实现我自己的 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 方法,但会注入(inject)值(除了我的附加字段)。 这些附加字段的值实际上应该插入到程序内部,而不是由用户直接输入。我怎样才能做到这一点?

提前致谢。

最佳答案

我假设您使用的是 boradleaf 3.1.x。

所以我将向您简要介绍如何从后端注入(inject)自定义关系。

您可以以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

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

关于java - 如何在Broadleaf中实现自己的ProductImpl?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23893699/

相关文章:

java - java中如何比较两个ArrayList

hibernate - Spring-Data JPA 与 Multi-Tenancy Hibernate

java - 如何删除(多线程)事务性 Spring/JPA 中的实体

java - 模拟 java.lang.Exception : Class should be public when I use inner classes in tests

java - Spark 作业在 takeSample 上用完堆内存

java - Hibernate 存储过程的困境

java - 配置Hibernate和Spring的数据库开发环境

java - Junit 测试不会使用 Google App Engine 保留实体

java - JPA 查询不返回列表中的更新结果

Java - printf方法 - 使用reduce字段