春データ休憩ポストは、ネストされたオブジェクトを保存するために失敗しました

パオロ:

私はこれらのオブジェクトを持っています:

@Data
@Entity
@Table
@EqualsAndHashCode(callSuper = true)
public class User extends AbstractEntity implements Serializable {

   private static final long serialVersionUID = -55089179131569489L;

   private String username;
   private String email;
   private boolean admin;
   private String name;
   private String surname;

   @OneToMany(mappedBy = "owner")
   private List<Ad> ads;
}

そして

@Entity
@Table
@Data
@EqualsAndHashCode(callSuper = true)
public class Ad extends AbstractEntity implements Serializable {

    private static final long serialVersionUID = -4590938091334150254L;
    private String name;
    private String description;
    private double price;

    @Enumerated(EnumType.STRING)
    private Category category;

    @ManyToOne(cascade = CascadeType.ALL,fetch = FetchType.EAGER)
    @JoinColumn(name = "OWNER_ID")
    private User owner;

}

私は(すでにデータベースで)タイプUser.classの既存のオブジェクト内部でタイプAd.classの対象とPOSTを実行しようとするサービスは、Adオブジェクトを保存し、結合列「OWNER_IDは、」空のまま。

私は、マッピングが正しいことだと思います。あなたは、問題を把握するために私を助けてもらえますか?

これは私のリポジトリです。

@Repository
@Transactional(readOnly = true)
public interface AdRepository extends PagingAndSortingRepository<Ad, String> 
{}  

これは私のRestRepositoryです

@RepositoryRestResource(collectionResourceRel = "ad", path = "ad")
public interface AdRestRepository extends PagingAndSortingRepository<Ad, String> {}
Supun Wijerathne:

私は少しバックステップし、あなたの問題を一般化した場合、

あなたはしようとしているPOST のサブリソースをとの両方のアクションを期待します

  • 新しいリソースを作る(広告)
  • 所有者(ユーザー)との関連付けを行います

1回の呼び出しで起こったことにします。

しかし残念ながら、ばねのデータ-残りがないではない、このような動作をサポート。これを行うには、2回の呼び出しを必要とします。

  • リソース(広告)=>作るための一つのPOSTをする/ads実際のペイロード
  • 協会=>作るために第二にPOSTをするusers/{ownerId}HATEOASリンク最初の呼び出しによって作成されたリソースの。

見てみましょう。この公式ドキュメントのセクションを。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=218634&siteId=1