【问题标题】:how to get the repository item for the particuler order Id in atg?如何在 atg 中获取特定订单 ID 的存储库项?
【发布时间】:2014-06-05 04:32:45
【问题描述】:

我的任务是获取特定订单 ID 的存储库项目(“它就像运输组和付款组详细信息”)你现在我在一个对象中获得了所有存储库项目..

但问题是我不知道如何从这个对象中获取这些存储库项目(运输组和付款组)

这是我尝试过的代码..

 Repository connection;
 connection=/atg/commerce/order/OrderRepository-->this i putted in my property file 
 Repository repository = (Repository)getConnection();
 RepositoryItem Item = (RepositoryItem)   
 Repository.getItem(getOrderId());

在这个 "repositoryItem" 对象中,我拥有所有存储库项目,因此我必须从该对象中获取所有运输组和付款组..

请帮帮我..

提前致谢..

【问题讨论】:

  • 欢迎来到 SO。您上面的 sn-p 不能是您的真实代码。变量名不能与类名相同,并且您的代码中间有属性文件定义。您将通过更好的示例获得更好的帮助。
  • @radimpe ok 通常告诉我如何从运输组和付款组等对象中获取存储库项...
  • 嗨@radimpe现在我得到了特定订单ID的所有存储库项目,还有一项任务是我必须将这些存储库项目设置为我尝试过的新订单,但我遇到了一些演员异常请帮助我摆脱这是问题...在此先感谢

标签: atg atg-dynamo


【解决方案1】:

对于订单,当您的起点是 orderId 时,有两种方法可以到达 ShippingGroupPaymentGroup

让我们从Repository的方式开始:

RepositoryItem order = getConnection().getItem(getOrderId(), "order"); //The getConnection().getItem(getOrderId()) method is deprecated. Make sure you pass the itemDescriptor in with your query
List<RepositoryItem> shippingGroups = (List<RepositoryItem>) order.getPropertyValue("shippingGroups");
List<RepositoryItem> paymentGroups = (List<RepositoryItem>) order.getPropertyValue("paymentGroups");

但是,对于某些对象,ATG 提供了一些帮助方法来使事情变得更容易。因此,使用开箱即用的OrderManager,代码可能会让您更轻松:

Order order = getOrderManager().loadOrder(getOrderId());
List<ShippingGroup> shippingGroups = order.getShippingGroups();
List<PaymentGroup> paymentGroups = order.getPaymentGroups();

您现在可以更轻松地访问运输组和付款组中的大多数内容。请记住,您的存储库自定义不会自动在这些中公开,您必须扩展 OrderOrderImpl 类才能这样做(对于 ShippingGroupPaymentGroup 也是如此。

【讨论】:

  • @Mani 没问题。请记住接受可以解决您的查询的问题的答案。它可以帮助其他有相同/相似问题的人更快地找到正确的解决方案。
  • 嗨@radimpe现在我得到了特定订单ID的所有存储库项目,还有一项任务是我必须将这些存储库项目设置为我尝试过的新订单,但我遇到了一些演员异常请帮助我摆脱这是问题...在此先感谢
  • Mani 如果它解决了您最初的问题,请接受答案,这是您花时间帮助您的人至少可以做的。正如@radimpe 提到的,它也对社区有所帮助。你这样留下的问题越多,你将来得到的答案就越少。
【解决方案2】:

ATG 表示两个不同级别的订单 - 作为存储库项目(因此在数据库中)和作为订单对象。

强烈建议您在对象级别而不是存储库级别与订单交互。

OrderManager 组件提供了通过 id 加载订单所需的 API。

Order order = orderManager.loadOrder(orderId);

其中orderManager 是包含对/atg/commerce/order/OrderManager Nucleus 组件的引用的变量。

此 API 隐藏了从存储库加载订单及其相关数据实体所需的所有代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-11
    • 2019-09-08
    • 2014-02-22
    • 1970-01-01
    • 2020-03-18
    • 2019-12-08
    • 2017-08-05
    • 2012-04-04
    相关资源
    最近更新 更多