6

Chúng tôi có hai ứng dụng Khởi động mùa xuân với kiến ​​trúc máy khách-máy chủ. Phần cuối được cấu hình với Spring Data REST + JPA. Giao diện người dùng sẽ sử dụng các tài nguyên được hiển thị bởi chương trình phụ trợ và phục vụ api REST công khai.Làm thế nào để ràng buộc các thực thể REST dữ liệu Spring để truyền các đối tượng?

Có thể để dữ liệu Spring ánh xạ đối tượng tên miền tự động từ DTO bằng cách tuyên bố, ví dụ: bean bản đồ?

// 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

bất kỳ giải pháp RJo nào? Tôi phải đối mặt với vấn đề tương tự như vậy .. – freakman

Trả lời

3

Chúng tôi có thể sử dụng tính năng Chiếu (có sẵn từ 2.2.x trở đi) trong Spring Data REST. Một cái gì đó như dưới đây:

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> { 
} 

Khi gọi REST của thiết lập "dự báo" tham số để "orderDTO" tức là

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

Vui lòng tham khảo:

.210

Lưu ý:

  • Bằng cách đặt thuộc tính excerptProjection trong RepositoryRestResource chú thích, nó sẽ trở lại chiếu theo mặc định mà không cần tham số "chiếu".
  • "chiếu" là bắt buộc khi chúng tôi chú thích giao diện bằng cách sử dụng @Projection và đặt nó trong gói rất giống với loại miền hoặc gói con của nó.
+0

Đây không phải là những gì tôi đã làm, vì tôi trông giống như một phép chiếu "mặc định" mà không phải đưa ra thông số dự đoán, nhưng vì không có câu trả lời nào tốt hơn, tôi đánh dấu nó là chính xác – RJo

+1

Bằng cách thiết lập thuộc tính excerptProjection trong chú thích RepositoryRestResource, nó sẽ trả về phép chiếu theo mặc định mà không có tham số "chiếu". – charybr

+0

Tuyệt vời, giải quyết phần lớn các vấn đề của chúng tôi – RJo

Các vấn đề liên quan