java - Hibernate:在多对一关系中保存空实体

标签 java mysql hibernate jpa

有一个类似的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/

相关文章:

java - Async doInBackground 会崩溃,并强制关闭

java - 如何在 Android 中使用 facebook api 注销

java - Hibernate在Spring中集成的问题

java - System.out.println() 与 Hibernate.initialize(proxy)

mysql索引问题-解释说文件排序

java - 如何在hibernate中从数据库中的字符串FQN实例化一个类?

java - 组件的定位(如何将几个按钮放置在屏幕中央相同大小)

java - 单元测试使用预制文件是否合适?

mysql 查询字符串变量

php - 如何选择字段中一天的最短时间和最长时间?