String organid = "admin";
List<Model> listModel = null;
try {
//获取该用户创建的模型
<!--通过测试自定义的sql语句最高支持表级别的,也就是有实实在在数据库中有对应的实际的表,而不是某一个状态中的如:ModelQuery类型不行,只有list的Model类型 -->
listModel = repositoryService.createNativeModelQuery()
.sql("SELECT * FROM "+managementService.getTableName(Model.class)+" h WHERE h.tenant_id_ like #{organid} ")
.parameter("organid", organid+":%").listPage(page.getFirstResult(), page.getMaxResults());
} catch (NullPointerException e) {
throw new NullPointerException("该用户没有创建模型");
} finally {
if (listModel == null) {
page.setCount(0);
page.setList(null);
return page;
}
if (listModel != null) {
//筛选符合category模型
if (category != null){
List<Model> listModelIsCategory = new ArrayList<>();
for(Model list : listModel) {
if (category.equals(list.getCategory())) {
listModelIsCategory.add(list);
}
}
listModel = listModelIsCategory;
}
page.setCount(listModel.size());
page.setList(listModel);
return page;
}
}
managementService.getTableName(Model.class):
managementService是activit中的接口,不必要连接其过多的实现;通过其指定匹配实体类Model
注意:所使用的查询筛选的条件不是写在sql()方法中而是写在parameter()方法中,其中1.参数名称2.参数值
建议对自定义的activiti的sql语句进行try,我在测试的时候发现,没有数据的时候偶尔会出现空指针异常.