복붙노트

[SPRING] Spring의 @RepositoryRestResource REST API를 통해 다 - 대 - 다 관계에 요소를 추가하는 방법?

SPRING

Spring의 @RepositoryRestResource REST API를 통해 다 - 대 - 다 관계에 요소를 추가하는 방법?

@RepositoryRestResource 인터페이스를 사용하여 두 개의 상당히 간단한 엔티티간에 다 대다 관계를 만드는 방법을 정확히 파악하는 데 문제가 있습니다.

예를 들어, 다음과 같이 간단한 부모 - 자식 엔터티 관계가 있습니다.

@Entity
public class ParentEntity {
    @Id
    @GeneratedValue
    private Long id;

   @ManyToMany
   private List<ChildEntity> children;
}

@Entity
public class ChildEntity {
    @Id
    @GeneratedValue
    private Long id;

    @ManyToMany(mappedBy="children")
    private List<ParentEntity> parents;
}

내 리포지토리는 바닐라 Spring @RepositoryRestResource HATEOS API를 사용하고 있습니다.

@RepositoryRestResource(collectionResourceRel = "parents", path = "parents")
public interface ParentRepository extends PagingAndSortingRepository<ParentEntity, Long> {
}

@RepositoryRestResource(collectionResourceRel = "children", path = "children")
public interface ChildRepository extends PagingAndSortingRepository<ChildEntity, Long> {
}

POST를 사용하여 개별 ParentEntity 및 ChildEntity를 만들었지 만 내장 인터페이스를 사용하여 두 인스턴스 간의 관계를 PUT / PATCH하는 방법을 파악할 수 없습니다.

http : // localhost : 8080 / api / parents / 1 / children과 같은 JSON을 보내기 위해 PUT을 사용할 수 있어야하지만 지금까지는 작동하는 구조체를 찾을 수없는 것 같습니다.

해결법

  1. ==============================

    1.여기에 대한 답변을 찾았습니다 : Spring 데이터 나머지에서 참조 객체를 업데이트하는 방법?

    여기에 대한 답변을 찾았습니다 : Spring 데이터 나머지에서 참조 객체를 업데이트하는 방법?

    JSON 대신 "Content-Type : text / uri-list"를 사용하면 PUT을 사용하여 리소스를 컬렉션에 "추가"하고 URI를 전달할 수 있습니다. DELETE로 자원을 제거 할 수 있습니다.

    일부 파고 들자 Spring 설명서에 다음과 같은 내용이 있음을 발견했다. http://docs.spring.io/spring-data/rest/docs/2.2.0.RELEASE/reference/html/#repository-resources.association-resource .

  2. ==============================

    2.필자는 텍스트 / URI 목록 형식의 콘텐츠 유형이 항상 싫어서 몇 가지 조사를했으며 문서화되지 않은 JSON 형식도 사용할 수 있다고 판명되었습니다.

    필자는 텍스트 / URI 목록 형식의 콘텐츠 유형이 항상 싫어서 몇 가지 조사를했으며 문서화되지 않은 JSON 형식도 사용할 수 있다고 판명되었습니다.

    {
      "_links":{
        "1":"/555",
        "1":"/556"
      }
    }
    

    링크의 rel은 빈 문자열을 제외하고 모두 같을 수 있습니다. 모두 같을 수 있습니다. 링크 부분은 참조 된 객체의 자체 링크에서 전체 URL이 될 수 있지만 URL의 마지막 부분이면 충분합니다. (forseslash + id)

  3. from https://stackoverflow.com/questions/26259474/how-to-add-elements-in-a-many-to-many-relationship-via-springs-repositoryrestr by cc-by-sa and MIT license