1. 程式人生 > >Activit自定義SQL語句查詢

Activit自定義SQL語句查詢

 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,我在測試的時候發現,沒有資料的時候偶爾會出現空指標異常.