2016-03-02 13 views
6

JHipsterを使用する方法を学んでいますが、カスタムクエリの作成方法を理解できません。JHipsterでカスタムクエリを追加するには?

私のプロジェクトではOrdersテーブルにDeliveryDayフィールドとWeekフィールドがあり、現在の曜日の注文のみを表示したいと考えています。

@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); 
    } 
:私はこの1つを追加 OrdersResource.java

public interface OrdersRepository extends JpaRepository<Orders,Long> { 

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

:DeliveryDayと週が私はこのようなカスタムクエリを追加OrdersRepository.java中のSO値(1-7及び0-2)

intです

Iもtoday.htmlを加え(orders.htmlコピー)と

'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.js

と私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 
      }; 
     }; 
    }); 

のように見えますindex.htmltoday.js

を追加する今、私は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) { 

あなたは、今日の注文のリストを取得したい場合は、必要に貼り付けた例でOrders.queryと同じようにOrdersToday.queryを使用してください。

おそらくOrdersTodayへの参照を持つOrdersTodayControllerを作成し、today.jsの代わりOrdersControllerにそれを使用したいと思うでしょう。

関連する問題