我想確保我知道我在使用hibernate的DB表示&中正在做什麼。@OneToMany關係上的外鍵約束
我的項目管理工具允許我的用戶創建一個由Phase
(s)組成的Project
。
我不希望創建一個鏈接表,並在我的實體進行像這樣:
我ProjectEntity
:
@OneToMany(mappedBy = "id")
private Set<PhaseEntity> phases = new HashSet<>(0);
和我PhaseEntity
:
@NotNull
@ManyToOne(targetEntity = ProjectEntity.class)
private ProjectEntity project;
填滿後我的PhaseEntity
並通過我保存DAO
phaseDao.save(phaseEntity);
我收到以下錯誤:
ERROR: insert or update on table "phase" violates foreign key constraint "fk8x1x98c4hq4ps0d30y6nxe90u" Detail: Key (phase_id)=(1820) is not present in table "project".
的方式我認爲,推動包含特定ProjectEntity
到我的數據庫應該創造1項和更新另外一個階段,第一個應該是我phase
條目,並且後者應該是project
的更新,爲其Set
添加一個階段。
我是否必須明確地將我的階段保存在我的project
表中? 你喲看到我的推理有什麼缺陷嗎?