EclipseLink @OneToOne 关系 CascadeType 不应删除
EclipseLink @OneToOne relation CascadeType should not remove
我有两个实体 class,它们之间存在 @OneToOne
关系。数据库中还有一个外键。
class Entity1 {
@OneToOne(cascade = CascadeType.ALL, mappedBy = "entity1")
private Entity2 entity2;
}
class Entity2 {
@JoinColumn(name = "DB_FIELD_NAME", referencedColumnName = "ENTITY_1_PK")
@OneToOne(optional = false)
private Entity1 entity1;
}
如您所见,有 cascade = CascadeType.ALL
参数。当然,如果我删除我的 entity1 对象:
em.remove(entity1)
它正在级联到我的实体 2,并且该对象也已从数据库中删除。我的问题是,我怎样才能不删除我的 entity2
我应该使用哪种 CascadeType
?
谢谢!
什么都没有。
如果你不想级联,就不要使用级联参数,它是optional.
class Entity1 {
@OneToOne(mappedBy = "entity1")
private Entity2 entity2;
}
class Entity2 {
@JoinColumn(name = "DB_FIELD_NAME", referencedColumnName = "ENTITY_1_PK")
@OneToOne(optional = true)
private Entity1 entity1;
}
我有两个实体 class,它们之间存在 @OneToOne
关系。数据库中还有一个外键。
class Entity1 {
@OneToOne(cascade = CascadeType.ALL, mappedBy = "entity1")
private Entity2 entity2;
}
class Entity2 {
@JoinColumn(name = "DB_FIELD_NAME", referencedColumnName = "ENTITY_1_PK")
@OneToOne(optional = false)
private Entity1 entity1;
}
如您所见,有 cascade = CascadeType.ALL
参数。当然,如果我删除我的 entity1 对象:
em.remove(entity1)
它正在级联到我的实体 2,并且该对象也已从数据库中删除。我的问题是,我怎样才能不删除我的 entity2
我应该使用哪种 CascadeType
?
谢谢!
什么都没有。 如果你不想级联,就不要使用级联参数,它是optional.
class Entity1 {
@OneToOne(mappedBy = "entity1")
private Entity2 entity2;
}
class Entity2 {
@JoinColumn(name = "DB_FIELD_NAME", referencedColumnName = "ENTITY_1_PK")
@OneToOne(optional = true)
private Entity1 entity1;
}