【发布时间】:2023-03-14 03:20:01
【问题描述】:
这里是实体 sn-p.......忽略 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 工作台的图像。
【问题讨论】:
-
您没有展示您坚持的方式/内容。
-
@AndreiI 我添加了截图以供参考。请注意,上面添加的代码中的实体没有多余的列
-
我的意思是:在某个地方调用 JPA.em(),然后调用
persist。你能告诉我们那部分吗? -
dao 被注入 JavaService @Override public void saveNew(DaoObject elt) { JPA.em().persist(elt); } @ Override public JavaServiceResult createContent(Content content) throws ServiceException { if (content.getName() == null || content.getType() == null || content.getCpm() == 0) { throw new ServiceException(UserCreateServiceJavaImpl .class.getName(), BAD_REQUEST, "必填字段缺失!", Messages.get("content.create.error.mandatory.fields.missing")); } dao.saveNew(内容);返回 JavaServiceResult.buildServiceResult(创建,内容); }
-
哇,这真的很奇怪。在我的测试课程中,我确实在任一侧调用了 set 以保持关系可用。它没有用。
标签: jpa playframework-2.0 hibernate-onetomany