1

스프링 부트 데이터 REST를 사용하여 온라인 경매 REST API를 만들고 있습니다. Domain Driven Design appoach를 사용하려고합니다.스프링 데이터 나머지 도메인 기반 디자인 - 집계가 아닌 루트 엔티티 게시

나는 2 개의 엔티티가있다 .... Listing과 ListedItem. Listed item은 판매용 아이템이고 Listing은 ListedItem으로 구성되며, 목록 작성이 시작되고 끝날 때의 다른 데이터를 포함한다.

ListedItem을 제어 할 수 있도록이 목록이 집계 루트 여야하며 목록을 제거해도 항목이 제거됩니다.

그래서 집계 루트 (리스팅)에 대한 저장소가 있습니다.

먼저 ListedItem을 POST해야 링크 된 ListedItem으로 목록을 게시 할 수 있습니다.

스프링 데이터 나머지를 사용하여 ListedItem을 게시하려면 어떻게해야합니까? 자체의 저장소가 없으므로 엔드 포인트가 공개되지 않습니다.

POST ListedItem을/api/listing-item에 추가 할 수있을 것으로 기대하지만 각 집계 경로에 대한 저장소 만있는 경우 ddd를 사용할 때이를 수행하는 방법을 배울 수 없습니다.

확실하게 ListedItem이 최상위 유지를 위해 자체 저장소가 필요합니까?

@Entity 
@Table(name = "listed_item") 
@Getter 
@ToString 
@EqualsAndHashCode 
public class ListedItem extends BaseEntityModel { 

    private String name; 

    private String shortDescription; 

    private String fullDescription; 

} 

@Entity 
@Table(name = "listing") 
@Getter 
@ToString 
@EqualsAndHashCode 
public class Listing extends BaseEntityModel { 

    @OneToOne 
    private ListedItem listedItem; 

    @Enumerated 
    private PossibleListingState currentState; 

    private long numBids; 

    public Listing() { 

    } 

    public PossibleState getCurrentState() { 
     return currentState; 
    } 

    public void setCurrentState(PossibleListingState currentState) { 
     this.currentState = currentState; 
    } 
} 



@RepositoryRestResource(collectionResourceRel = "listings", itemResourceRel = "listing") 
public interface ListingRepository extends PagingAndSortingRepository<Listing, String> { 
} 

답변

0

내가 다음 링크 된 ListedItem와 목록을 게시 할 수 있도록 먼저 내 ListedItem를 게시해야합니다 : 그것은 도움이 경우 다음

내 기업 및 저장소입니다.

이것은 오해입니다. Listing이 집계 루트이고 존재하지 않으면 존재할 수없는 경우 ListedItem 엔티티이므로 모두 동시에 만들어야합니다. 따라서 을 /listings 리소스에 방금 입력하고 Listing과 함께 ListedItem을 만듭니다.

+0

감사합니다. :). 이것은 나의 원래 생각을 확인합니다. 솔직하게 나는 이것을 달성하는 데 어려움을 겪었고, 결국 나는 그것에 대해 잘못 생각해야한다고 결정했다. 나는 ... 그래서 같이 { \t "listedItem을"내 전체 목록을 게시하려고 : { \t \t "이름": "항목 이름", \t \t "shortDescription에": "이것은 정말로 단지 아주 짧은 ENT 버튼을 누르면 DVR입니다 무엇 항목 " \t \t"fullDescription는. "". AAT 베로 EOS 등 accusamus 등 iusto ODIO dignissimos ducimus 간략히 blanditiis praesentium " \t} } 그러나 나는 이것을 달성하는 것 없습니다. 내가 어떻게이 일을 할 수 있는지에 대한 조언이 있으면 정말 고마워. – gezinspace

+0

Ahh ... Listing 엔티티에서 내 listingItem에 @OneToOne (cascade = CascadeType.ALL)을 사용해야한다는 것을 잊었다! – gezinspace

관련 문제