有一个类似的question ,但我的情况与定义的级联有点不同。
尝试保存具有非空 SiteEntity 的任务时 - 一切正常。但是,当您尝试使用空 SiteEntity 保存一个时,会出现空参数异常(不出所料)- 使用虚拟 SiteEntity 会在 SITES 表中创建一个新行而结束...
这是相关的一段代码(省略无关数据):
@javax.persistence.Table(name = "TASKS")
@Entity
public class Task {
@Id
@GeneratedValue
@Column(name = "ID", unique = true, nullable = false)
private int id;
@ManyToOne(cascade = CascadeType.ALL, fetch=FetchType.EAGER)
@JoinColumn(name="SITEID", nullable = true)
@NotFound(action = NotFoundAction.IGNORE)
@ForeignKey(name = "id")
private SiteEntity site;
}
@javax.persistence.Table(name = "SITES")
@Entity
public class SiteEntity {
@Id
@Column(name = "ID")
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
}
基本上,问题是如何保存具有空 SiteEntity 的任务 - 结果是 0 将写入 TASKS 表的 SITEID 列?
附言完全删除级联(“按原样保存并稍后处理网站”)并没有改变这种情况。
谢谢你的帮助!
最佳答案
来自 Ondrej Bozek的想法 - 问题是 SITEID 上的“NOT NULL”约束。删除它解决了问题。
关于java - Hibernate:在多对一关系中保存空实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31403294/