我试图通过OfBiz中的简单Join从数据库中获取一些数据。这是放置在.java方法中的代码,该代码是从controller.xml调用的
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”参数。
因此,我了解到,如果我未指定任何内容,则应该围绕我的服务进行交易。我想念什么?
最佳答案
您是否将此代码包装在服务中?确保您没有从控制器调用它