2016-03-02 108 views
6

我正在學習使用JHipster,並無法弄清楚如何使用創建自定義查詢。如何在JHipster中添加自定義查詢?

在我的項目中,我有Orders表,其中DeliveryDayWeek字段,並且只想顯示當天的當天的訂單。 DeliveryDay和周是int

所以在OrdersRepository.java我說這樣的自定義查詢值(1-7和0-2):

public interface OrdersRepository extends JpaRepository<Orders,Long> { 

Page<Orders> findByDeliveryDayAndWeek(int weekday, int week, pageable); 
OrdersResource.java

我這增加了一個:

@RequestMapping(value = "/today", 
     method = RequestMethod.GET, 
     produces = MediaType.APPLICATION_JSON_VALUE) 
    @Timed 
    public ResponseEntity<List<Orders>> getOrdersForToday(Pageable pageable) 
     throws URISyntaxException { 
     log.debug("REST request to get a page of Orderss"); 
     Page<Orders> page = ordersRepository.findByDeliveryDayAndWeek(1, 0, pageable); 
     HttpHeaders headers = PaginationUtil.generatePaginationHttpHeaders(page, "/api/today"); 
     return new ResponseEntity<>(page.getContent(), headers, HttpStatus.OK); 
    } 

我還新增today.html(copied orders.html)和today.js

'use strict'; 

angular.module('fruitcrmApp') 
    .config(function ($stateProvider) { 
     $stateProvider 
      .state('today', { 
       parent: 'entity', 
       url: '/today', 
       data: { 
        authorities: ['ROLE_USER'], 
        pageTitle: 'fruitcrmApp.orders.home.title' 
       }, 
       views: { 
        '[email protected]': { 
         templateUrl: 'scripts/app/custom/today.html', 
         controller: 'OrdersController' 
        } 
       }, 
       resolve: { 
        translatePartialLoader: ['$translate', '$translatePartialLoader', function ($translate, $translatePartialLoader) { 
         $translatePartialLoader.addPart('orders'); 
         $translatePartialLoader.addPart('global'); 
         return $translate.refresh(); 
        }] 
       } 
      }) 

    }); 

,並添加today.jsindex.html

orders.controller.js看起來像這樣(由JHipster生成)

'use strict'; 

angular.module('fruitcrmApp') 
    .controller('OrdersController', function ($scope, $state, Orders, OrdersSearch, ParseLinks) { 

     $scope.orderss = []; 
     $scope.predicate = 'id'; 
     $scope.reverse = true; 
     $scope.page = 1; 
     $scope.loadAll = function() { 
      Orders.query({page: $scope.page - 1, size: 20, sort: [$scope.predicate + ',' + ($scope.reverse ? 'asc' : 'desc'), 'id']}, function(result, headers) { 
       $scope.links = ParseLinks.parse(headers('link')); 
       $scope.totalItems = headers('X-Total-Count'); 
       $scope.orderss = result; 
      }); 
     }; 
     $scope.loadPage = function(page) { 
      $scope.page = page; 
      $scope.loadAll(); 
     }; 
     $scope.loadAll(); 


     $scope.search = function() { 
      OrdersSearch.query({query: $scope.searchQuery}, function(result) { 
       $scope.orderss = result; 
      }, function(response) { 
       if(response.status === 404) { 
        $scope.loadAll(); 
       } 
      }); 
     }; 

     $scope.refresh = function() { 
      $scope.loadAll(); 
      $scope.clear(); 
     }; 

     $scope.clear = function() { 
      $scope.orders = { 
       details: null, 
       orderDate: null, 
       firstDelivery: null, 
       isActive: false, 
       id: null 
      }; 
     }; 
    }); 

現在我可以訪問http://localhost:3000/#/today但它顯示了從Orders我做錯了什麼的所有數據?如何使用我自己的方法從OrdersRepository.java

我試圖搜索例子,但沒有找到任何相關的。我錯過了什麼是需要的步驟?鏈接一些教程,如果答案會很長,那麼它會很好。

回答

7

您需要爲您的today API端點創建一個新的角度服務。像這樣的東西,叫orders-today.service.js

'use strict'; 

angular.module('fruitcrmApp') 
    .factory('OrdersToday', function ($resource) { 
     return $resource('api/orders/today', {}, { 
      'query': { method: 'GET', isArray: true} 
     }); 
    }); 

然後在您的orders.controller.js文件,你需要注入新的OrdersToday服務:

.controller('OrdersController', function ($scope, $state, Orders, OrdersSearch, OrdersToday, ParseLinks) { 

如果你想獲得今天的訂單列表,你需要使用OrdersToday.query就像您在粘貼的示例中使用Orders.query一樣。

您可能會想要創建一個OrdersTodayController並參考OrdersToday,並使用today.js而不是OrdersController

相關問題