OrmLite удалить не удалось - PullRequest
0 голосов
/ 21 января 2011

Я выполняю простое удаление объекта ormlite. Код ниже. Но несмотря ни на что, объект никогда не удаляется.

Dao<Subscription, Object> dao = helper.getSubscriptionDataDao();

dao = helper.getSubscriptionDataDao();
QueryBuilder<Subscription, Object> query = dao.queryBuilder();
query.where().eq("key", subKey);
Subscription sub = dao.queryForFirst(query.prepare());
int r = dao.delete(sub); // r is 1

Я что-то здесь упускаю?

Ответы [ 2 ]

2 голосов
/ 22 января 2011

Вот как я решаю проблему: убедитесь, что у объекта есть первичный ключ.Установка поля в качестве идентификатора не означает, что идентификатор будет сгенерирован автоматически.Без идентификатора удалить не удастся.

0 голосов
/ 08 сентября 2012

Вы должны создать DeleteBuilder для Delete.QueryBuilder только для получения запроса на выбор.

public int deleteByObjectId(int objectId) throws SQLException, java.sql.SQLException 
{
    DAL<T> helper= new DAL<T>(_context, type);
    RuntimeExceptionDao<T, Integer> dao =helper.getSimpleDataDao2();
    DeleteBuilder<T, Integer> delBuilder =dao.deleteBuilder();    
    delBuilder.where().eq("ObjId", objectId);
    PreparedDelete<T> prepareQery=delBuilder.prepare();
    int i=dao.delete(prepareQery);
    return i;
 }
...