我对spring数据使用spring boot,对于保存实体,我使用crudrepository。我有两个实体:org和orgdef。这个想法是为一个组织存储多个定义。org是不可变的部分,orgdef是可变的。这是代码中的外观:
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Getter
@Entity
@Table(name = "org", uniqueConstraints = {
@UniqueConstraint(columnNames = { "code" }, name = "uk_org_code"),
@UniqueConstraint(columnNames = { "definition_id"},
name = "uk_org_definitionId")})
public class Org {
@Id
@Column(
name = "id",
updatable = false,
nullable = false
)
protected UUID id = UUID.randomUUID();
@Column(updatable = false)
protected String code;
@JoinColumn(nullable = false, foreignKey = @ForeignKey(name = "fk_org_definition_orgDef"))
@OneToOne(optional = false, cascade = { CascadeType.PERSIST, CascadeType.MERGE })
protected OrgDef definition;
}
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Getter
@Setter
@Entity
@Table(name = "org_def")
public class OrgDef extends UuidIdEntity {
@Id
@Column(
name = "id",
updatable = false,
nullable = false
)
protected UUID id = UUID.randomUUID();
@JoinColumn(foreignKey = @ForeignKey(name = "fk_orgDef_orgId_org"), updatable = false)
@ManyToOne
protected Org org;
@JoinColumn(foreignKey = @ForeignKey(name = "fk_orgDef_parentId_org"))
@ManyToOne
protected Org parent;
}
另外,我想指出的是,org与orgdef有一对一的关系,而orgdef与org有多对一的关系。orgdef也有“parent”字段,它也有多对一关系。当我保存这个类的记录时,我的表中有这个:
组织
表格:
组织定义
表格:
你可以在桌子上看到
组织定义
领域
组织ID
是空的,但是
父ID
不为空。但是在保存时我指定
组织
两者的对象
组织
和
起源
字段
组织定义
反对。可能是映射中的问题?有人能帮忙吗?因为
起源
领域
组织定义
很好,但是
组织
字段输入
组织定义
不是存钱!我的期望是
组织ID
和
父ID
将不为空