非法论点:。 。 。中的例外。 。 。原因为空

时间:2019-05-02 17:33:18

标签: java hibernate spring-mvc spring-data-jpa liquibase-hibernate

我正在尝试向使用REST调用以及JPA / Hibernate / Liquibase的现有JAVA Spring / Angular JS Web应用程序添加功能。我遵循了那里的内容,尽管经历了很多错误,但我仍无法弄清楚最后一个错误是什么。应用程序已加载,但没有数据返回显示。而且我知道数据在数据库中,因为直接的SQL查询将其拉回了数据库。因此,必须在Spring / JPA / Hibernate设置中使用。我在日志中看到Angular控制器调用了我的PropertiesRestController.java文件并使用了正确的方法。依次调用我的PropertiesDataService.java文件中的正确方法,该方法使用Repository.java文件中的正确查询/方法。但是,当我调试故障点时,该代码似乎在AngularJS服务的“ data = angular.fromJson(data);”行中发生故障。日志显示了每种方法的正确参数,但随后在PropertiesRestController.java方法调用上出错,显示为“。。。logging.LoggingAspect-非法参数['Sold','30,'jwt.model.UserContext @ xzyABC123',Page 。。。。。web.rest.controller.PropertiesRestController.findMyProperties()。。。。。。。。web.rest.controller.PropertiesRestController中的request [number:0,size 20,sort:null]]。原因为null的findMyProperties()”。另外,在带有开发人员工具的浏览器的前端,我在此页面视图的AngularJS服务的“ findMyProperties.transformResponse”行中获得“ SyntaxError”。

我已经对此进行了广泛的网络研究。并且我添加了例如“将Optional.ofNullable(myProperty).map(a-> new ResponseEntity <>(a,HttpStatus.OK))。orElse(new ResponseEntity <>(HttpStatus.NOT_FOUND)添加到PropertiesRestController.java方法中在我尝试返回Page myMyperperty = myPropertyDataService.getMyProperties(。。。。)之前,其他人都遇到了返回null并需要对其进行处理的问题。我肯定会获取数据(如果SQL正确),但万一需要调整的查询我决定至少要处理日志文件中报告的空值。我已经确保@Query中的SQL引用的是实体名称,而不是表/ SQL语言(尽管老实说,我已经使用过一些没有在实体定义中看到,所以我不知道它们从何处使用。)

AngularJS控制器

    $scope.myPropertiesP = [];

    $scope.loadall = function(){
    MyProperties.findMyProperties({propertyStatus:"Pending",listingDate:0,function(result){
    $scope.myPropertiesP = result.content;
});
    $scope.loadall();

AngularJS服务

    use strict;
    angular.module('propertyApp')
    .factory('MyProperties',function($resource){
      return $resource('rest/api/Properties/my/:propertyStatusName/:propertyListingDate', {}, {
      'findMyProperties': method: 'GET',
         transformResponse: function(data){
           data = angular.fromJson(data);
           return data;
         });
      });
    });

PropertyRestController.java

    @GetMapping(value='/properties/my/{propertyStatusName}/{propertyListingDate}", produces = MediaType.APPLICATION_JSON_VALUE)
    public ResponseEntity<Page<Properties>> findMyProperties(@PathVariable propertyStatusName, @PathVariable Integer propertyListingDate, @Authenticated User user, Pageable page){
    Page<Properties> myProperty = myPropertyDataService.getMyProperties(propertyStatusName, propertyListingDate,user.getUser(),pageable);
    return Optional.ofNullable(myProperty).map(a -> new ResponseEntity<>(a, HttpStatus.OK)).orElse(new ResponseEntity<>(HttpStatus.NOT_FOUND));
    }

PropertyDataServices.java

    public Page<Properties> getMyProperties(String propertyStatusName, Integer propertyListingDate, User user, Pageable page){
      if(pageable != null){
        if(propertyListingDate==0)&&(propertyStatusName=='Pending'){
          return PropertyRespository.MyPropertiesP(user.getId(),pageable);
        } else {
          return PropertyRespository.MyPropertiesP(user.getId(), newPageRequest(0,20));
    }
    }

PropertyRepository.java

    public interface PropertyRespository extends JpaRepsotiory(Property,Long>{
        Page<Property> findByNameContaingIgnoreCase(String name, Pageable pageable);
     . . . 

       @Query("select prop from Property prop where prop.propertyOwner = :propertyOwnerId AND (propertyStatus=3 OR prop.propertyStatus=2) ORDER BY prop.propertListingDate DESC")
    Page<Property> myPropertiesP(@Param("propertyOwner") Integer propertyOwnerId, Pageable pageable):


    }



I am supposed to get back JSON strings of database objects to display through AngularJS.

0 个答案:

没有答案