AppEngine: удержание детей-сирот в собственном двунаправленном отношении «один ко многим» - PullRequest
0 голосов
/ 19 октября 2011

У меня есть следующие две сущности:

@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, key), все сироты также будут удалены. Я прочитал соответствующий параграф в документации, даже пробовал его с JDO с @Element (зависимый = "ложь"), но проблема остается. Как я могу сохранить детей-сирот в этом отношении?

1 Ответ

0 голосов
/ 19 октября 2011

Оставлять сироту бессмысленно.В v1 GAE JDO / JPA все отношения «принадлежат», поэтому у вас должен быть родитель любого ребенка.И если родитель больше не существует, то ребенок удаляется.Всегда.

В v2 GAE JDO / JPA вы также сможете иметь неизвестные объекты, следовательно, нет «родителя», и они могут продолжать существовать после.

...