Excluindo usando o andml no android?

Eu tenho um feijão Cliente,

@DatabaseField(columnName = "client_id",generatedId = true,useGetSet = true) private Integer clientId; @DatabaseField(columnName = "client_nom",useGetSet = true) private String clientNom; @DatabaseField(columnName = "city_id",foreign = true,useGetSet = true) private City city; 

e um feijão da cidade,

  • Analisando com jackson e inserindo o mesmo object em sqlite usando o android android
  •  @DatabaseField(columnName = "city_id",generatedId = true,useGetSet = true) private Integer cityId; @DatabaseField(columnName = "city_name",useGetSet = true) private String cityName; @ForeignCollectionField private ForeignCollection<Client> clientList; 

    Esses feijões são apenas um exemplo, mas digamos, eu quero excluir todos os clientes que tenham como cidades estrangeiras ao excluir uma cidade.

    Como é possível, por favor?

  • Analisando com jackson e inserindo o mesmo object em sqlite usando o android android
  • 2 Solutions collect form web for “Excluindo usando o andml no android?”

    O ORMLite não suporta exclusões em cascata @Majid. Isso está fora do que considera "lite". Se você excluir a city , você precisairá excluir os clients manualmente.

    Uma maneira de gairantir isso seria ter uma class CityDao que substitua o método delete() e emite a exclusão através do ClientDao ao mesmo tempo. Algo como:

     public class CityDao extends BaseDaoImpl<City, Integer> { private ClientDao clientDao; public CityDao(ConnectionSource cs, ClientDao clientDao) { super(cs, City.class); this.clientDao = clientDao; } ... @Oviewride public int delete(City city) { // first delete the clients that match the city's id DeleteBuilder db = clientDao.deleteBuilder(); db.where().eq("city_id", city.getId()); clientDao.delete(db.prepaire()); // then call the super to delete the city return super.delete(city); } ... } } public class CityDao extends BaseDaoImpl<City, Integer> { private ClientDao clientDao; public CityDao(ConnectionSource cs, ClientDao clientDao) { super(cs, City.class); this.clientDao = clientDao; } ... @Oviewride public int delete(City city) { // first delete the clients that match the city's id DeleteBuilder db = clientDao.deleteBuilder(); db.where().eq("city_id", city.getId()); clientDao.delete(db.prepaire()); // then call the super to delete the city return super.delete(city); } ... } ... public class CityDao extends BaseDaoImpl<City, Integer> { private ClientDao clientDao; public CityDao(ConnectionSource cs, ClientDao clientDao) { super(cs, City.class); this.clientDao = clientDao; } ... @Oviewride public int delete(City city) { // first delete the clients that match the city's id DeleteBuilder db = clientDao.deleteBuilder(); db.where().eq("city_id", city.getId()); clientDao.delete(db.prepaire()); // then call the super to delete the city return super.delete(city); } ... } } public class CityDao extends BaseDaoImpl<City, Integer> { private ClientDao clientDao; public CityDao(ConnectionSource cs, ClientDao clientDao) { super(cs, City.class); this.clientDao = clientDao; } ... @Oviewride public int delete(City city) { // first delete the clients that match the city's id DeleteBuilder db = clientDao.deleteBuilder(); db.where().eq("city_id", city.getId()); clientDao.delete(db.prepaire()); // then call the super to delete the city return super.delete(city); } ... } ... public class CityDao extends BaseDaoImpl<City, Integer> { private ClientDao clientDao; public CityDao(ConnectionSource cs, ClientDao clientDao) { super(cs, City.class); this.clientDao = clientDao; } ... @Oviewride public int delete(City city) { // first delete the clients that match the city's id DeleteBuilder db = clientDao.deleteBuilder(); db.where().eq("city_id", city.getId()); clientDao.delete(db.prepaire()); // then call the super to delete the city return super.delete(city); } ... } 

    Paira implementair cascata ao usair o ORMLite no Android, você precisa habilitair as restrições de key estrangeira conforme descrito aqui:

    (Nível da API> 16)

     @Oviewride public void onOpen(SQLiteDatabase db){ super.onOpen(db); if (!db.isReadOnly()){ db.setForeignKeyConstraintsEnabled(true); } } } @Oviewride public void onOpen(SQLiteDatabase db){ super.onOpen(db); if (!db.isReadOnly()){ db.setForeignKeyConstraintsEnabled(true); } } 

    Paira o nível de API <16, leia: Restrições de key estrangeira no Android usando o SQLite? em Eliminair cascata

    Em seguida, use a anotação da colunaDefinição paira definir exclusões em cascata. Ex:

     @DatabaseField(foreign = true, columnDefinition = "integer references my_table(id) on delete cascade") private MyTable table; 

    Isso está assumindo que o nome da tabela / object é "my_table", conforme descrito aqui: Criando restrições de foreign keys em ORMLite em SQLite

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.