3

最初にデータストアから取得せずにエンティティを削除する方法はありますか? エンティティのキ​​ーまたは ID を既に持っていると想定しています。私はそのようなものがondeleteObjectByIdの類似物になると考えています。getObjectByIdPersistenceManager

私が考えることができる最も近いのは、キーのみに依存するクエリを使用して (ここでQuery.deletePersistentAll()見られるように) を指定することですが、それがエンティティを削除する前にフェッチするかどうかはわかりません。

ありがとう

編集:私は、低レベル API と python API を使用してこれを行う方法を知っています。JDOレイヤー内でそれを行う方法があるかどうか疑問に思っていました。

4

3 に答える 3

2

datanucleus は、 Google グループで私の質問に答えました。

あまり。問題は、オブジェクトがリレーションを持つ可能性があることです。これらは操作のカスケードを引き起こす可能性があるため、通常は最初にメモリにロードする必要があります。メモリにロードする必要がない唯一の状況は、削除するオブジェクトのクラスに関係がない場合です。

低レベルの API に入り、オブジェクトを爆破することは、関連するオブジェクトに影響を与える場合としない場合があります...おそらく、それを担当する誰かがそれについてコメントすることができます.

于 2009-11-11T04:51:22.160 に答える
2

JDOについてはよくわかりませんが、Pythonの場合、ちょっとしたハックでこれが可能です。同じキーで新しいインスタンスを「作成」してから削除する必要があります。データベースに一度だけヒットします。

instance = Model(key=key_to_delete, required_property='dummy')
instance.delete()
于 2010-05-23T13:02:20.543 に答える
0

低レベル APIを使用するのはどうですか?

私はDataService.delete(Key)あなたが必要とすることを正確に行うと思います。

Long as key を使用する場合は、最初に KeyMaker を使用してキーを作成する必要があります。

Key k = KeyFactory.createKey(Employee.class.getSimpleName(), "Alfred.Smith@example.com");
于 2009-11-09T13:45:19.050 に答える