AM中用代码创建ViewCriteria进行查询
4:52 pm in Oracle 融合中间件 by Eleven.Xu
概述
本文主要描述如何在AM中使用代码动态为某VO的实例创建ViewCriteria并使用该ViewCriteria对该VO的实例进行查询以及该方法的查询结果的注意事项。
实现
1、基于HR Schema的Employees表创建Entity Object,View Object,并创建ApplicationModule,添加该刚创建成功的View Object的实例到AM的Data Model
2、为AM产生其实现类,添加如下代码到刚产生的AM的实现类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | private RowIterator findRowIteratorByViewCriteria(ViewObject viewObject, ViewCriteria viewCriteria) { RowIterator rowIterator = viewObject.findByViewCriteria(viewCriteria, -1, ViewObject.QUERY_MODE_SCAN_DATABASE_TABLES); if (rowIterator.first() != null) { return rowIterator; } else { return null; } } public Row findEmployeeByEmailCriteria(String email) { ViewObjectImpl employeesViewImpl = this.getEmployeesView1(); ViewCriteria viewCriteria = employeesViewImpl.createViewCriteria(); ViewCriteriaRow viewCriteriaRow = viewCriteria.createViewCriteriaRow(); viewCriteriaRow.setAttribute("Email", "=" + email); viewCriteria.add(viewCriteriaRow); employeesViewImpl.applyViewCriteria(viewCriteria); RowIterator rowIterator = this.findRowIteratorByViewCriteria(employeesViewImpl, viewCriteria); Row row = null; while (rowIterator.hasNext()) { System.out.println("rowIterator hasNext"); row = rowIterator.next(); } if ((rowIterator.getAllRowsInRange()).length != 0) { System.out.println(rowIterator.first().getAttribute("EmployeeId")); } return row; } |