0
我有以下兩個實體:AppEngine上:在一個擁有雙向one-to-many關係保留孤兒
@Entity
public class SupermarketChain {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Extension(vendorName="datanucleus", key="gae.encoded-pk", value="true")
private String key;
@OneToMany(mappedBy = "supermarketChain")
@Basic
private List<Supermarket> supermarkets;
}
@Entity
public class Supermarket {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Extension(vendorName="datanucleus", key="gae.encoded-pk", value="true")
private String key;
@ManyToOne(optional=true)
private SupermarketChain supermarketChain;
}
當我刪除與em.remove父(SupermarketChain.class,鍵) ,所有孤兒也將被刪除。我閱讀了文檔中的relevant paragraph,甚至用@Element(依賴=「false」)用JDO嘗試過,但問題仍然存在。我怎樣才能保留這個關係中的孤兒?
保留(或創建)孤兒在App Engine中很有意義。擁有共享共同父項的兩個實體(即使該父項不存在)是您如何將事物放入同一個實體組中 - 通過擁有一個虛構的實體作爲它們的父代。在這種情況下,JDO語義和App Engine語義的差異足以導致我認爲的一些混淆。說「保留孤兒沒有意義」並不公平。 –
不知道「JDO語義」和「AppEngine語義」之間有什麼不同。 JDO只是定義了一個API。它沒有強制刪除,或者沒有父鍵時(因爲它沒有強制父鍵的任何要求)。上面描述的邏輯是GAE工作人員在他們的JDO插件中體現的(因爲有道理)。 – DataNucleus