Мне нужно немного помочь, пытаясь удалить строку из родительской таблицы, но не удаляя потомков. У меня есть эта таблица MyEntityA. Это имеет 2 внешних ключа к таблице MyEntityB, например:
@PersistenceCapable(detachable = "true")
public class MyEntityA implements Serializable {
private static final long serialVersionUID = 3575973891490133579L;
/*
* KEYS
*/
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.UUIDHEX)
@Column(name = “Id", jdbcType = "VARCHAR", length = 32)
private String Id;
@Persistent(defaultFetchGroup = "true", dependent = "true")
@Column(name = "CURRENTCLIENT", jdbcType = "VARCHAR", length = 32)
@ForeignKey(name = “MY_ENTITY_B_FK1", deleteAction = ForeignKeyAction.RESTRICT, table = “MY_ENTITY_B", columns = {
@Column(name = “ID") }, updateAction = ForeignKeyAction.RESTRICT)
private MyEntityB currentClient;
@Persistent(defaultFetchGroup = "true", dependent = "true")
@Column(name = "RELATEDTO", jdbcType = "VARCHAR", length = 32)
@ForeignKey(name = “MY_ENTYTY_B_FK2", deleteAction = ForeignKeyAction.RESTRICT, table = "MY_ENTITY_B", columns = {
@Column(name = “ID") }, updateAction = ForeignKeyAction.RESTRICT)
private MyEntityB relatedTo;
public Relationship() {
}
public MyEntityB getCurrentClient() {
return currentClient;
}
public void setCurrentClient(MyEntityB currentClient) {
this.currentClient = currentClient;
}
public MyEntityB getRelatedTo() {
return relatedTo;
}
public void setRelatedTo(MyEntityB relatedTo) {
this.relatedTo = relatedTo;
}
}
Теперь, используя JDO, когда я пытался удалить строку из таблицы MyEntityA, например:
PersistenceManager pm = …
MyEntityA objectById = pm.getObjectById(MyEntityA.class,”abc”);
pm.deletePersistent(objectById)
Или как:
PersistenceManager pm = …
MyEntityA objectById = pm.getObjectById(MyEntityA.class,”abc”);
objectById.setRelatedTo(null);
objectById.setCurrentClient(null);
pm.makePersistent(objectById);
pm.deletePersistent(objectById)
в обоих случаях код удалит строку из таблицы MyEntityA и строки из таблицы MyEntityB, на которую ссылается таблица MyEntityA. Я могу sh Я мог бы удалить строку из MyEntityA, но не трогать строки из таблицы MyEntityB.
Может ли кто-нибудь мне помочь?