Spring Data Rest:使用PUT替换包含嵌入式集合的实体

时间:2017-02-10 13:03:48

标签: spring rest spring-data-rest

我有一个通过@RepositoryRestResource注释的存储库公开的实体,该存储库包含另一个实体(称为Seat)的集合(一对多),它不通过存储库公开。 我正在尝试使用http PUT发送表示整个实体(包括Seats集合)的json来更新公开的实体(称为Packet)。 我期待现有数据被替换,但是在PUT完成后,Seats集合包含一组额外的数据,即Spring将Seats添加到现有集合中,而不是替换它们。

我正在使用Spring Boot 1.4.0

@Entity
public class Packet extends BaseEntity {

  @OneToMany(....CascadeType.ALL...)
  public @Getter List<Seat> additionalSeats;

  public void setAdditionalSeats(List<Seat> additionalSeats) {
    this.additionalSeats = additionalSeats;
    if (additionalSeats != null) {
        for (Seat bs : additionalSeats) {
            bs.setPacket(this);
        }
    }
  }
}

@Entity
public class Seat extends BaseEntity {

  private @Getter @Setter String price;
  private @Getter @Setter String itemName;
  private @Getter @Setter int count;

  @ManyToOne
  private @Getter @Setter Packet packet;
}

有没有办法替换嵌入式集合中的项目?

0 个答案:

没有答案