我正在使用spring boot数据REST进行在线拍卖REST api。我正在尝试使用域驱动设计方法。
我有2个实体.... Listing和ListedItem,其中列出的项目是待售项目,列表由ListedItem组成,并保存有关列表开始和结束时间的其他一些数据。
我觉得列表必须是这种情况下的聚合根,这样才能控制ListedItem,如果删除列表,项目也会被删除。
所以我有一个聚合根存储库(清单)。
我需要首先发布我的ListedItem,以便我可以使用其链接的ListedItem POST一个列表。
我现在如何使用spring数据休息POST一个ListedItem?没有为此公开端点,因为它没有自己的存储库。
我希望能够将ListedItem POST到/ api / lists-item但是如果我只有每个聚合路由的存储库,那么在使用ddd时我无法解决这个问题。
当然,如果我坚持下去,它仍然需要自己的存储库吗?
以下是我的实体和存储库,以防它有用:
@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 :(得分:0)
我需要首先发布我的ListedItem,以便我可以POST一个 列出其链接的ListedItem。
这是一种误解。如果Listing
是聚合根,并且在没有它的ListedItem
实体的情况下不能存在,那么两者都必须同时创建。因此,您最有可能POST
只有/listings
资源,并且必须同时创建Listing
及其ListedItem
transform: translate(0, -28px) rotate(-45deg);