例如.
javax.jdo.Query query = pm.newQuery(Person.class);
query.setFilter("height > 100");
query.deletePersistentAll();
不過若因為符合資料太多 則會造成 java.lang.OutOfMemoryError: Java heap space 的錯誤(heap 空間不夠),
可以考慮其他方式, 因為 google app enigne 的查詢只允許 1 個範圍的過濾查詢[2], 目前想到的方式是用order 後 取出前幾位,之後在將每個屬性判斷否符合條件在刪除, 用起來還真不方便....
參考
1 則留言:
若考慮使用選取前1000 筆資料的方法,就要改寫, 因為 deletePersistentAll 和 setRange 會有衝突,(有 條件式如 > )至少今天我試是會這樣,改寫得code
PersistenceManager _thePm = PMF.get().getPersistenceManager();
javax.jdo.Query query = _thePm.newQuery(Person.class);
query.setFilter("height > 100");
query.setRange(0, 1000);
Object _InverterAll= query.execute();
_thePm.deletePersistentAll(_InverterAll);
_thePm.close();
不過前幾天可以,今天是又不行
張貼留言