我在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;
}
答案 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;");
内进行。