gpt4 book ai didi

java - OrmLite 级联删除

转载 作者:行者123 更新时间:2023-11-30 10:52:34 25 4
gpt4 key购买 nike

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

如何在删除某些Product时删除ProductPhoto

@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;
}

最佳答案

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

PRAGMA foreign_keys=ON;

我曾经在 void onOpen(SQLiteDatabase db) 上的 SQLOpenHelper 上执行此操作,所以类似于:

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

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

至于您的模型,它们似乎设置正确。

注意:据我所知,这里有两个缺点。首先,由于 sqlite 版本,它仅支持 android 2.2(据我所知)。谷歌似乎也建议在其他地方这样做,但它是在 api 16 之后才支持的方法,所以我一直在 db.execSQL("PRAGMA foreign_keys=ON;"); 中这样做。 p>

关于java - OrmLite 级联删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34332263/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com