gpt4 book ai didi

android - 房间多表同对象(多语言数据库)

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:57:41 30 4
gpt4 key购买 nike

我正在开发一个 android 项目,该项目必须在本地数据库(房间)中存储一些数据。我必须提供的功能之一是将数据以不同语言存储在本地数据库中,例如,如果我有食物信息,则必须以英语、德语、法语等格式存储此信息。

我的数据库的结构是这样的:

@Entity(tableName = "food")
public class Food{

}

@Entity(tableName = "food_fr")
public class FoodFr{

}

@Entity(tableName = "food_de")
public class FoodDe{

}

我的问题是如何让这三个不同的表(使用不同的语言)具有相同的列,并且 @Dao 对象为所有这些表返回一个公共(public)(父)对象?

我不太确定这是否可行,但如果有人对此有解决方案,请提供帮助。

提前致谢:)

最佳答案

最好的解决方案是使用一个表,而不是三个表。使用列来区分三种语言(例如,language 列包含 enfrde值)。由于无论如何您都将重写大部分现有代码,因此从三张表切换到一张表似乎不是主要障碍。

也就是说,为了保持现有的三表结构,FoodFoodFrFoodDe 都从一个公共(public)基础扩展而来类(例如,BaseFood),您可以在其中定义字段/列。

对于查询,您需要让您的 DAO 处理所有四种情况(三个特定的语言表,以及一个将所有三个结果组合起来的方法),例如:

@Query("SELECT * FROM Food")
List<Food> getAllFood();

@Query("SELECT * FROM FoodFr")
List<FoodFr> getAllFrenchFood();

@Query("SELECT * FROM FoodDe")
List<FoodDe> getAllGermanFood();

@Transaction
List<BaseFood> getAllFoodAcrossAllThreeLanguages() {
ArrayList<BaseFood> result=new ArrayList<>();

result.addAll(getAllFood());
result.addAll(getAllFrenchFood());
result.addAll(getAllGermanFood());

return result;
}

关于android - 房间多表同对象(多语言数据库),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50234010/

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