我從OrientDB開始,我掌握了基本知識。但我無法想象如何映射多對多關係,而不需要我在刪除記錄時進行大量的完整性檢查。如何在OrientDB中映射多對多的關係
我使用一個對象數據庫(ODatabaseObjectTx),我試圖映射這個簡單的關係:
人< - >角色
一個人可以有多個角色和角色可以被分配到多人。 N到M的關係。
我的人等級:
public class Person {
private String name;
public Person() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
我的角色類:
public class Role {
private String name;
public Role() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
現在我無法弄清楚,如果我要放在User
類Set<Role>
或Set<User>
在Role
類來建立鏈接。無論哪種方式,如果我從一個記錄中刪除一個記錄,我必須檢查另一個記錄的鏈接以避免引用null
。對我來說,在User
類中放置一個Set<Role>
會更方便。
在RMDBS中,您可以創建一個外鍵並添加一些級聯規則,OrientDB是否提供了類似的功能來節省我手動執行此操作的麻煩?
如果最後我不得不手動做這個,我應該採取什麼策略?刪除記錄時,我應該完全檢查另一個羣集嗎?我應該離開null
,並在看到它們時處理它們嗎?我是否應該創建雙引用(在和Set<User>
的Role
中都有Set<Role>
,我想這會以更多的空間和複雜性爲代價帶來更快的刪除)?
我已經試過了,它消除了全程記錄,而不是僅僅是參考。例如,假設我在'User'類的'Set'關係中擁有那個映射,如果我刪除了一個'Role',那麼所有擁有該'Role'的用戶也將被刪除,而不僅僅是刪除'設置'我'用戶'物質。看來我真正需要的是類似CascadeType.REFRESH。 –
Hoffmann