0

我的任务是获取特定订单 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"对象中,我拥有所有存储库项目,因此我必须从该对象中获取所有运输组和付款组..

请帮帮我..

提前致谢..

4

2 回答 2

0

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

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

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

Order order = orderManager.loadOrder(orderId);

其中orderManager是保存对/atg/commerce/order/OrderManagerNucleus 组件的引用的变量。

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

于 2015-01-06T12:05:03.953 回答
0

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

让我们从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();

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

于 2014-06-05T05:41:44.793 回答