Eliminare un'entità da chiave senza averlo scaricato la prima volta nel motore di app (tramite JDO)

StackOverflow https://stackoverflow.com/questions/1692508

Domanda

C'è un modo per eliminare un'entità senza dover prendere dal datastore prima? Io parto dal presupposto che ho già la chiave o l'ID per l'entità. Sto pensando a qualcosa di simile deleteObjectById che sarebbe un analogo a getObjectById su PersistenceManager.

Il più vicino mi viene in mente sta usando Query.deletePersistentAll() (come si vede qui ) e specificando una query che si basa solo sulla chiave, ma non posso dire se questo sta per recuperare l'entità prima di eliminarlo.

grazie

EDIT: io so come farlo utilizzando l'API di basso livello, così come nelle API di Python. Mi chiedevo se ci fosse un modo per farlo all'interno dello strato di JDO.

È stato utile?

Soluzione

DataNucleus risposto alla mia domanda sul gruppo Google :

  

Non proprio. Il problema è che un oggetto può avere rapporti e così,   poiché questi possono causare cascata di operazioni, deve tipicamente essere   caricato in memoria prima. L'unica situazione in cui non avrebbe bisogno di   essere caricato in memoria era se la classe dell'oggetto da eliminare avuto   nessuna relazione.

     

Andando in basso API livello e saltare via oggetti può o non può   avere un impatto su oggetti correlati ... forse qualcuno responsabile   si potrebbe esprimere giudizi.

Altri suggerimenti

Non sono sicuro di JDO, ma per Python questo è possibile con un piccolo hack. È necessario "creare" una nuova istanza con la stessa chiave e quindi eliminarlo. Sarà colpito il database solo una volta.

instance = Model(key=key_to_delete, required_property='dummy')
instance.delete()

Come sull'utilizzo del basso livello di API ?

Credo DataService.delete(Key) farà esattamente quello che ti serve.

Se si utilizza un lungo come la chiave, si ned utilizzare il fabbricante di chiavi per creare prima una chiave.

Key k = KeyFactory.createKey(Employee.class.getSimpleName(), "Alfred.Smith@example.com");
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top