복붙노트

[SPRING] 스프링 데이터 나머지에있는 동일한 엔티티에 대한 다중 리포지토리

SPRING

스프링 데이터 나머지에있는 동일한 엔티티에 대한 다중 리포지토리

Spring Data Rest를 사용하여 동일한 JPA 엔티티에 대해 서로 다른 두 개의 저장소를 게시 할 수 있습니까? 두 저장소에 서로 다른 경로와 rel-names를 주었지만 두 가지 중 하나만 REST endpoint로 사용할 수 있습니다. 내가 두 개의 저장소를 가지고있는 이유는 그 중 하나가 엔티티의 기본 필드 만 보여주는 발췌입니다.

해결법

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

    1.끔찍한 부분은 엔티티 당 1 개의 스프링 데이터 저장소 (@RepositoryRestResource) 만 가질 수있을뿐만 아니라 일반 JPA @ Repepitory (CrudRepository 또는 PagingAndSorting과 같은)가 있으면 스프링 데이터 나머지 하나와 상호 작용할 수도 있다는 것입니다 지도의 키는 엔터티 자체 임). 하나 또는 다른 임의의로드를 디버깅하는 꽤 많은 시간을 잃어 버렸습니다. 적어도 이것이 값을 무시하려고 할 때지도의 키가 이미 있으면 스프링 데이터의 하드 제한이 남아 있으면 적어도 예외가 발생할 수 있다고 생각합니다.

    끔찍한 부분은 엔티티 당 1 개의 스프링 데이터 저장소 (@RepositoryRestResource) 만 가질 수있을뿐만 아니라 일반 JPA @ Repepitory (CrudRepository 또는 PagingAndSorting과 같은)가 있으면 스프링 데이터 나머지 하나와 상호 작용할 수도 있다는 것입니다 지도의 키는 엔터티 자체 임). 하나 또는 다른 임의의로드를 디버깅하는 꽤 많은 시간을 잃어 버렸습니다. 적어도 이것이 값을 무시하려고 할 때지도의 키가 이미 있으면 스프링 데이터의 하드 제한이 남아 있으면 적어도 예외가 발생할 수 있다고 생각합니다.

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

    2.대답은 다음과 같습니다. 엔티티 당 하나의 저장소 만 가능합니다.

    대답은 다음과 같습니다. 엔티티 당 하나의 저장소 만 가능합니다.

  3. ==============================

    3.따라서이 질문에 직접 답하는 것은 아니지만 근본적인 문제를 해결하는 데 도움이 될 수 있습니다.

    따라서이 질문에 직접 답하는 것은 아니지만 근본적인 문제를 해결하는 데 도움이 될 수 있습니다.

    엔티티 당 하나의 저장소 만 가질 수 있지만 테이블 당 여러 엔티티를 가질 수 있습니다. 따라서 테이블 당 여러 개의 리포지토리가 있습니다.

    내가 작성한 코드에서, 자동 생성 된 id와 미리 설정된 id를 가진 두 개의 엔티티를 생성해야했지만, 둘 다 동일한 테이블을 가리키고 있습니다.

    @Entity
    @Table("line_item")
    public class LineItemWithAutoId {
    
        @Id
        @GeneratedValue(generator = "system-uuid")
        @GenericGenerator(name = "system-uuid", strategy = "uuid")
        private String id;
    
        ...
    }
    
    
    
    @Entity
    @Table("line_item")
    public class LineItemWithPredefinedId {
    
        @Id
        private String id;
    
        ...
    }
    

    그런 다음 각각에 대한 저장소가 있습니다.

    public interface LineItemWithoutId extends Repository<LineItemWithAutoId,String> {
    
        ...
    
    }
    
    
    public interface LineItemWithId extends Repository<LineItemWithPredefinedId,String> {
    
        ...
    
    }
    

    게시 된 문제의 경우 두 개의 개체가있을 수 있습니다. 하나는 모든 것에 게 게터와 세터와 함께 완전한 개체가 될 것입니다. 다른 하나는 엔티티 일 것이고, 모든 것에 대한 세터가 있지만 공개하려는 필드의 게터 만 있습니다. 이게 말이 돼?

  4. from https://stackoverflow.com/questions/36112451/multiple-repositories-for-the-same-entity-in-spring-data-rest by cc-by-sa and MIT license