OrmLite级联删除

时间:2015-12-17 10:29:04

标签: java android ormlite

我在stackoverflow上读了几个关于此的问题,但他们没有帮助

删除某些ProductPhoto时如何删除Products

@DatabaseTable(tableName = "Products")
public class Product{

    @DatabaseField(generatedId = true)
    private Long id;

    @ForeignCollectionField(eager = false)
    ForeignCollection<ProductPhoto> productPhotos;
}

@DatabaseTable(tableName = "ProductPhotos")
public class ProductPhoto {

    @DatabaseField(generatedId = true)
    private Long id;

    @DatabaseField(foreign = true)
    Product product;
}

1 个答案:

答案 0 :(得分:1)

我过去解决这个问题的方法是使用PRAGMA关键字在数据库中启用外键支持。据我所知,支持外键但你需要启用它们。它的SQL:

PRAGMA foreign_keys=ON;

我过去常常在SQLOpenHelper void onOpen(SQLiteDatabase db)上执行此操作,例如:

db.execSQL("PRAGMA foreign_keys=ON;");

我只在数据库可写时才这样做。

至于你的型号,它们似乎设置正确。

注意:就我所知,这里有2个不利方面。首先,由于sqlite版本,它仅支持Android 2.2(包括我的最佳知识)。谷歌似乎也建议在其他地方这样做,但它只是在api 16之后支持的方法,所以我一直在db.execSQL("PRAGMA foreign_keys=ON;");内进行。