Trong dự án của tôi, tôi có hai mô hình miền. Một phụ huynh và một thực thể con. Phụ huynh tham khảo danh sách các trẻ em. (ví dụ: Bài đăng và Nhận xét) Cả hai thực thể đều có các giao diện JPA CrudRepository<Long, ModelClass>
JPA dữ liệu vào mùa xuân được hiển thị dưới dạng @RepositoryRestResource
Cách tạo thực thể cha mẹ mới tham chiếu đến thực thể con hiện có trong phần còn lại của dữ liệu vào mùa xuân/HATEOAS
Các hoạt động HTTP GET và PUT hoạt động tốt và trả về HATEOS đại diện tốt đẹp của các mô hình này.
Bây giờ tôi cần điểm cuối REST đặc biệt "tạo Phụ huynh mới tham chiếu một quặng hơn đã tồn tại thực thể con". Tôi muốn đăng tài liệu tham khảo cho trẻ em như một văn bản/uri-list mà tôi vượt qua trong cơ thể của các yêu cầu như thế này:
POST http://localhost:8080/api/v1/createNewParent
HEADER
Content-Type: text/uri-list
HTTP REQUEST BODY:
http://localhost:8080/api/v1/Child/4711
http://localhost:8080/api/v1/Child/4712
http://localhost:8080/api/v1/Child/4713
Làm thế nào để thực hiện phần còn lại thiết bị đầu cuối này? Đây là những gì tôi đã cố gắng cho đến nay:
@Autowired
ParentRepo parentRepo // Spring Data JPA repository for "parent" entity
@RequestMapping(value = "/createNewParent", method = RequestMethod.POST)
public @ResponseBody String createNewParentWithChildren(
@RequestBody Resources<ChildModel> childList,
PersistentEntityResourceAssembler resourceAssembler
)
{
Collection<ChildModel> childrenObjects = childList.getContent()
// Ok, this gives me the URIs I've posted
List<Link> links = proposalResource.getLinks();
// But now how to convert these URIs to domain objects???
List<ChildModel> listOfChildren = ... ???? ...
ParentModel newParnet = new ParentModel(listOfChildren)
parentRepo.save(newParent)
}
Reference/liên quan https://github.com/spring-projects/spring-hateoas/issues/292
Lưu ý: Tôi biết cách tôi có thể thêm các yếu tố vào danh sách trẻ em thông qua triển lãm điểm cuối nghỉ ngơi mùa xuân-ghét ed bởi RepositoryRestResource. Ở đó tôi có thể tạo mối quan hệ con parnet qua POSTing text/uri-list như mô tả ở đây: https://stackoverflow.com/questions/26259474/how-to-add-elements-in-a-many-to-many-relationship -via-springs-repositoryrestr? rq = 1 Nhưng tôi muốn biết làm thế nào tôi làm điều đó trong điểm cuối còn lại tùy chỉnh của riêng tôi. – Robert
Có khá nhiều câu hỏi tương tự như thế này. Nhưng trường hợp đặc biệt của tôi là: Tôi muốn tạo một thực thể cha mẹ _NEW_, nó sẽ được liên kết với quyền con đã được _EXISTING_. – Robert
Tôi hơi bối rối nhưng làm thế nào một đứa trẻ có thể tồn tại trước cha mẹ? Nó giống như bạn tạo một bình luận cho một bài viết mà chưa tồn tại. Thông thường, bạn cũng cố gắng tránh động từ trong điểm cuối tài nguyên vì nó cung cấp một số loại RPC mùi cho điểm cuối, mặc dù REST nó không thực sự quan trọng nếu nó có hay không. –