1

エンティティ スニペットは次のとおりです.......DaoObject を無視します..サブクラス化する各エンティティに自動生成された Id を追加するだけです。

コンテンツを永続化するために必要なものを強調しました。最終的に、ストリーム テーブルの contentid 列に値を追加できません。ただし、以下のコードを使用して、コンテンツ テーブルとストリーム テーブルの両方に行を追加します。

問題を確認してトラブルシューティングを手伝ってください

          Content newContent = TestHelper.contentFactory(null, "streamForCREATE_IT", xxxx, 100);
          Stream stream = TestHelper.streamFactory(null, "name", "appname",);
          **stream.setContent(newContent);
          List<Stream> streams = new ArrayList<Stream>();
          streams.add(stream);
          newContent.setStreams(streams);**


@Entity
public class Content extends DaoObject {
  public Content() {
  };

  private String name;
  private ContentType type;
  @OneToMany(fetch = FetchType.EAGER, mappedBy = "content", cascade = {CascadeType.PERSIST,CascadeType.MERGE}, orphanRemoval = true)
  @JsonManagedReference
  private List<Stream> streams = new ArrayList<Stream>();
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  public List<Stream> getStreams() {
    return streams;
  }
  public void setStreams(List<Stream> streams) {
    this.streams = streams;
  }
    public void addStream(Stream newStream) {
    if (streams == null) {
      streams = new ArrayList<Stream>();
    }
    newStream.setContent(this);
    streams.add(newStream);
  }
}

@Entity
public class Stream extends DaoObject {
  public Stream() {
  }
  @ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
  @JoinColumn(name = "contentid")
  @JsonBackReference
  private Content content;**
  private String name;
  private String appName;
  public Content getContent() {
  return content;
  }
  public void setContent(Content content) {
  this.content = content;
  }
  public String getName() {
  return name;
  }
  public void setName(String name) {
  this.name = name;
  }
  public String getAppName() {
  return appName;
  }
  public void setAppName(String appName) {
  this.appName = appName;
  }
} 

これはmysqlワークベンチの画像です。

ここに画像の説明を入力

4

1 に答える 1

0

くそー、ばかだった。これが発生している REST API をテストしています。コンテンツのストリームと各ストリームのコンテンツを正しく設定しましたが、それはすべて JSON 変換の前に発生していました。この関連付けがdaoで再作成されると、機能しました。これを解決するのに役立つ正しい質問をしてくれた@AndreiIに感謝します。

于 2014-09-23T07:10:53.657 に答える