【问题标题】:One-To-Many Cascade Save, ERROR: null value in column "b_id" violates not-null constraint一对多级联保存,错误:“b_id”列中的空值违反非空约束
【发布时间】:2016-11-03 14:12:48
【问题描述】:

当我尝试使用这种具有级联功能的关系插入时。系统出错:

错误:“b_id”列中的空值违反非空约束

一个实体。

@Id
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "uuid2")
private String id;

@ManyToOne(cascade = {CascadeType.ALL})
@JoinColumn(name = "b_id")
private B b;

B 实体。

@Id
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "uuid2")
private String id;

@OneToMany(mappedBy = "b", cascade = { CascadeType.ALL }, fetch = FetchType.EAGER)
private List<C> cs;

C 实体。

@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "uuid2")
private String id;

@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "b_id", nullable = false, referencedColumnName = "id")
private B b;

执行。

    A a = new A();
    B b = new B();
    C c = new C();

    List<C> cs = new ArrayList<C>();
    cs.add(c);

    b.setCs(cs);
    a.setB(b);

    aRepository.save(a);

【问题讨论】:

    标签: java hibernate parent-child one-to-many


    【解决方案1】:

    您的c 不知道它的b“父级” - 在保存之前尝试添加c.setB(b)

    【讨论】:

    • 我正在寻找一种与@prptn 相同的方法,因为我知道C 主键是bIdC 的另一个字段code 的组合键。似乎在@EmbeddedIdC@ManyToOne 之间没有绑定,因为我仍然收到错误:“b_id”列中的空值违反了非空约束。有什么想法吗?
    猜你喜欢
    • 2012-11-02
    • 2020-03-17
    • 1970-01-01
    • 2019-08-08
    • 2016-01-18
    • 2020-03-23
    • 2017-12-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多