2

我正在尝试通过 OfBiz 中的简单加入从 db 中获取一些数据。这是放置在从controller.xml调用的.java方法中的代码

DynamicViewEntity dve = new DynamicViewEntity();
dve.addMemberEntity("PR", "Product");
dve.addAliasAll("PR", "productName");
dve.addAliasAll("PR", "description");
dve.addRelation("one", "", "ProductAttribute", ModelKeyMap .makeKeyMapList("productId"));
dve.addMemberEntity("PA", "ProductAttribute");
dve.addAlias("PA", "attrName");

// Selected Rows
List selectedFields = UtilMisc.toList("productName", "description");

// Condition
List conditionList = UtilMisc.toList(new EntityExpr("attrName", EntityOperator.LIKE, attr), new EntityExpr("productName", EntityOperator.LIKE, key));
EntityConditionList condition = new EntityConditionList(conditionList, EntityOperator.AND);

EntityListIterator eli = delegator.findListIteratorByCondition(dve, condition, null, selectedFields, null, null);
List result = eli.getPartialList(0, 10);
eli.close();

运行它时,这是我收到的异常:

无法找到返回没有事务的 EntityListIterator 的查找。将此调用包装在事务中。

在进一步调查中,我发现了这一点:

默认情况下,service-multi 将围绕所有服务包装一个大事务,超时设置为服务的 _rowCount 事务超时。如果您不希望将所有服务调用包装在一个事务中,请在 invoke="" 之后使用 global-transaction="false" 参数。

所以我明白,如果我没有指定任何内容,则应该围绕我的服务进行交易。我错过了什么?

4

1 回答 1

1

您是否将此代码包装在服务中?确保你没有从控制器调用它

于 2013-02-28T09:24:23.723 回答