【发布时间】: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