2016-03-02 15 views
6

मैं जेएचप्स्टर का उपयोग करना सीख रहा हूं और कस्टम क्वेरी बनाने का उपयोग करने के तरीके को समझ नहीं सकता हूं।जेएचप्स्टर में एक कस्टम क्वेरी कैसे जोड़ें?

मेरी परियोजना में मेरे पास 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); 
    } 
:

public interface OrdersRepository extends JpaRepository<Orders,Long> { 

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

मैं इस एक कहा: DeliveryDay और सप्ताह मूल्यों (1-7 और 0-2)

तो OrdersRepository.java में मैं जोड़ा इस तरह कस्टम क्वेरी के साथ int है

मैंने today.html भी जोड़ा (orders.html कॉपी किया गया) और आज .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 एपीआई एंडपॉइंट के लिए एक नई कोणीय सेवा बनाने की आवश्यकता है। कुछ इस तरह, 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 में रखना चाहते हैं।

संबंधित मुद्दे