我有任务获取特定订单id的存储库项目("它像运输组和支付组详细信息"),现在我在一个对象中获得了所有存储库项目。
但问题是我不知道如何从这个对象中获取这些存储库项(shipping group和payment group)
This my code I have try .
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"
对象中,我有所有的存储库项,所以我必须从这个对象中获取所有的shipping group和payment group .
请帮帮我。
Thanks in Advance.
对于订单,当您的起点是orderId
时,有两种方法可以到达ShippingGroup
和PaymentGroup
让我们从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();
您现在可以更容易地访问航运组和付款组中的大多数内容。请记住,您的存储库定制不会在这些类中自动公开,您必须扩展Order
和OrderImpl
类才能做到这一点(ShippingGroup
和PaymentGroup
也是如此)。
ATG表示两个不同级别的订单—作为存储库项(因此在数据库中)和作为订单对象。
强烈建议您在对象级别而不是存储库级别与订单交互。
OrderManager
组件提供了按id加载订单所需的API。
Order order = orderManager.loadOrder(orderId);
其中orderManager
是保存对/atg/commerce/order/OrderManager
Nucleus组件的引用的变量。
该API隐藏了从存储库加载订单及其相关数据实体所需的所有代码。