1
這裏是實體片段....... Ignore DaoObject ..它只是將自動生成的Id添加到它所屬的每個實體中。播放2.3.4 Java - JPA oneToMany不保存外鍵。請檢查哪裏出錯
我已經突出顯示了哪些內容需要保留。最終,它無法爲流表中的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工作臺的形象。
您沒有顯示如何/持續。 – 2014-09-22 14:38:05
@AndreiI我添加了截圖供參考。請注意,上面添加的代碼中的實體沒有冗餘列 – 2014-09-22 15:17:33
我的意思是:在某處您調用JPA.em()然後「persist」。你能告訴我們那個部分嗎? – 2014-09-22 15:21:42