【问题标题】:Jpa OneToMany Relation not worikingJpa OneToMany 关系不起作用
【发布时间】:2015-03-14 19:46:57
【问题描述】:

我在尝试使用 @OneToMany 关系来持久化实体时遇到问题,但我没有得到解决。 (对不起,我不是以英语为母语的人)。

这些是实体:

@Entity
@Table(name = "PARENT")
@lombok.ToString
@lombok.EqualsAndHashCode(callSuper = false, of = { "id" })
public class Parent extends EntityBase<Long> {
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "PARENT_SEQ")
    @SequenceGenerator(name = "PARENT_SEQ", sequenceName = "PARENT_SEQ")
    @Column(name = "PARENT_ID")
    private Long id;

    @OneToMany(targetEntity = Child.class, cascade = CascadeType.ALL)
    @JoinColumns({ @JoinColumn(name = "PARENT_ID") })
    private List<Child> children;
}

子实体如下所示:

@Entity
@Table(name = "CHILD")
@lombok.ToString
@lombok.EqualsAndHashCode(callSuper = false, of = { "id" })
public class Child extends EntityBase<Long> {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "CHILD_SEQ")
    @SequenceGenerator(name = "CHILD_SEQ", sequenceName = "CHILD_SEQ")
    @Column(name = "CHILD_ID")
    private Long id;
}

我得到的例外是:

integrity constraint violation: NOT NULL check constraint; SYS_CT_10153 table: CHILD column: PARENT_ID

由于 Cascade 设置为 all,但我认为子项会被持久化,并且这会在 Parent 被持久化之后发生。这样 PARENT_ID 已经存在,并将被设置为子行中的外键。

表格如下所示:

PARENT
PARENT_ID   NUMBER(30,0)    No  

CHILD
CHILD_ID    NUMBER(30,0)    No          
PARENT_ID   NUMBER(30,0)    No      

有人知道我可能做错了什么吗?提前感谢您的帮助。

【问题讨论】:

    标签: exception jpa cascade check-constraints


    【解决方案1】:

    我解决了。我忘了添加关系的另一端:-/。这意味着,child.setParent(parent)。抱歉浪费了时间……

    【讨论】:

      猜你喜欢
      • 2012-01-08
      • 1970-01-01
      • 2018-09-08
      • 2017-05-22
      • 2017-01-23
      • 1970-01-01
      • 2020-07-11
      • 2019-01-12
      • 1970-01-01
      相关资源
      最近更新 更多