gpt4 book ai didi

java - Spring data rest领域驱动设计-发布非聚合根实体

转载 作者:行者123 更新时间:2023-12-04 03:08:17 32 4
gpt4 key购买 nike

我正在使用 spring boot 数据 REST 制作在线拍卖 REST api。我正在尝试使用领域驱动设计方法。

我有 2 个实体....Listing 和 ListedItem,其中 Listed item 是待售商品,Listing 由 ListedItem 组成,并包含有关列表开始和结束时间等的一些其他数据。

我觉得在这种情况下,Listing 必须是聚合根,这样才能控制 ListedItem,如果我删除 listing,该项目也会被删除。

所以我有一个聚合根(列表)的存储库。

我需要先发布我的 ListedItem,然后我才能发布一个列表及其链接的 ListedItem。

现在如何使用 spring data rest 发布 ListedItem?没有端点为此公开,因为它没有自己的存储库。

我希望能够将 ListedItem POST 到/api/listed-item,但是如果我只有每个聚合路由的存储库,那么在使用 ddd 时我不知道如何执行此操作。

如果我是 top 坚持,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> {
}

最佳答案

I will need to POST my ListedItem first so that I can then POST a listing with its linked ListedItem.

这是一种误解。如果 Listing 是聚合根并且没有它的 ListedItem 实体就不能存在,那么必须同时创建两者。因此,您很可能只是POST 到一个/listings 资源,其中包含创建Listing 和它的 所需的数据ListedItem 一次。

关于java - Spring data rest领域驱动设计-发布非聚合根实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47115605/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com