Я пытаюсь добавить функциональность в существующее веб-приложение JAVA Spring / Angular JS, которое использует вызовы REST наряду с JPA / Hibernate / Liquibase.Я следил за тем, что есть, и хотя я преодолел много ошибок, я не могу понять, что, как мы надеемся, является последней ошибкой.Приложение загружается, но данные для отображения не возвращаются.И я знаю, что данные находятся в базе данных, поскольку прямой запрос SQL возвращает их назад.Так должно быть с настройкой Spring / JPA / Hibernate.Я вижу в журналах, что контроллер Angular вызывает мой файл PropertiesRestController.java и использует правильный метод.Это, в свою очередь, вызывает правильный метод в моем файле PropertiesDataService.java, который использует правильный запрос / метод в моем файле Repository.java.Но когда я отлаживаю точку разбивки, код в сервисе AngularJS выглядит как строка «data = angular.fromJson (data);».Журналы показывают правильные параметры для каждого метода, но затем выдают ошибку при вызове метода PropertiesRestController.java с помощью ".... Logging.LoggingAspect - Illegal Argument ['Sold', '30,' jwt.model.UserContext @ xzyABC123 ', Pagerequest [число: 0, размер 20, sort: null]] in... web.rest.controller.PropertiesRestController.findMyProperties ().. logging.LoggingAspect - Исключение в.. web.rest.controller.PropertiesRestController.findMyProperties () с делом = ноль ".Кроме того, в интерфейсе браузера с инструментами разработчика я получаю «SyntaxError» в строке «findMyProperties.transformResponse» моего сервиса AngularJS для этого просмотра страницы.
Я провел обширные веб-исследования по этому вопросу. И ядобавили, например, «возвращение Optional.ofNullable (myProperty) .map (a -> new ResponseEntity <> (a, HttpStatus.OK)). orElse (new ResponseEntity <> (HttpStatus.NOT_FOUND) в вызов метода PropertiesRestController.java.Прежде чем я пытался вернуть Page myProperty = myPropertyDataService.getMyProperties (....... Другие имели проблемы с возвращаемым нулем и должны были его обработать. Я получаю данные точно (если SQL правильный), но в случае запросаЯ решил по крайней мере обработать нуль, который сообщается в файле журнала. Я убедился, что мой SQL в @Query ссылается на имена сущностей, а не на таблицы / язык SQL (хотя, честно говоря, некоторые из них уже используются, я несмотрите в определениях сущностей, так что я не знаю, откуда они взяли их для использования.)
AngularJS Controller
$scope.myPropertiesP = [];
$scope.loadall = function(){
MyProperties.findMyProperties({propertyStatus:"Pending",listingDate:0,function(result){
$scope.myPropertiesP = result.content;
});
$scope.loadall();
AngularJS Service
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.