6

У нас есть два приложения Spring Boot с архитектурой клиент-сервер. Бэкэнд сконфигурирован с помощью Spring Data REST + JPA. Передняя часть должна потреблять ресурсы, открытые бэкэнд, и обслуживать публичный REST api.Как связать объекты REST данных Spring для передачи объектов?

Возможно ли, чтобы данные о Spring автоматически отображали объекты домена из DTO, путем объявления, например, компоновщика карт?

// JPA persistable 
@Entity 
public class Order { .. } 

// Immutable DTO 
public class OrderDto { .. } 

// Is this somehow possible.. 
@RepositoryRestResource 
public interface OrderDtoRepository extends CrudRepository<OrderDto, Long> {} 

// .. instead of this? 
@RepositoryRestResource 
public interface OrderRepository extends CrudRepository<Order, Long> {} 
+0

любое решение RJo? im сталкивается с той же проблемой atm .. – freakman

ответ

3

Мы можем использовать функцию проецирования (начиная с 2.2.x и далее) в Spring Data REST. Что-то, как показано ниже:

import org.springframework.data.rest.core.config.Projection; 

@Projection(name = "orderDTO", types = Order.class) 
public interface OrderDTO { 
    //get attributes required for DTO 
    String getOrderName(); 
} 

@RepositoryRestResource(excerptProjection = OrderDTO.class) 
public interface OrderRepository extends CrudRepository<Order, Long> { 
} 

При вызове REST установить параметр "проекции" на "orderDTO" т.е.

http://host/app/order?projection=orderDTO 

Пожалуйста, обратитесь:

Примечания:

  • Устанавливая атрибут excerptProjection в RepositoryRestResource аннотации, он будет возвращать проекцию по умолчанию без параметра «проекции».
  • «проекция» требуется, когда мы аннотируем интерфейс с помощью @Projection и размещаем его в том же пакете, что и тип домена или его подпапка.
+0

Это не совсем то, что я был после, так как я больше похож на «дефолтную» проекцию без необходимости давать параметр проецирования, но поскольку лучшего ответа не было, я отметил его как правильный – RJo

+1

Установив атрибут excerptProjection в аннотации RepositoryRestResource, он будет возвращать проекцию по умолчанию без параметра «проекции». – charybr

+0

Отлично, что решает большинство наших проблем – RJo

 Смежные вопросы

  • Нет связанных вопросов^_^