Java 安卓房间数据库

Java 安卓房间数据库,java,android,sql,android-room,Java,Android,Sql,Android Room,我不知道在没有太多样板的情况下,我该如何获取数据 问题是: 我有一个无法更改的数据库。它有多个相同类型的字段几乎相同,例如,我有text_en和text_fr(这两个词在不同语言的英语和法语中是相同的),我有+71个相同的字段,但不同的语言 我需要的是 @Entitiy(tableName = "blabla") class X { private String textTarget; private String textMain; ... } 我应该如何使用Da

我不知道在没有太多样板的情况下,我该如何获取数据

问题是: 我有一个无法更改的数据库。它有多个相同类型的字段几乎相同,例如,我有text_en和text_fr(这两个词在不同语言的英语和法语中是相同的),我有+71个相同的字段,但不同的语言

我需要的是

@Entitiy(tableName = "blabla")
class X {

    private String textTarget;
    private String textMain;

    ...
}
我应该如何使用Dao接口来获得所需的语言并映射到x类

例如,应该工作的是更新实体
ColumnInfo(name=“text\u en”)

@Query("select  :main , :target from phrases where :id ")
    List<X> getPhrase(String main,String target);


usage : getPhrase("text_en","text_esp");
   // for example returning object X with field main = "hello" and target " holla")

您在@Query中输入的是一条SQL语句,您实际上可以在sqlite命令行实用程序或任何桌面软件中测试它们,以验证它们的正确性。因此,如果您想要翻译成所需的语言,它应该如下所示:

@Query("SELECT :main AS text_main, :target AS text_target FROM `phrases` WHERE id = :id)
List<Translation> getTranslationById(String firstLang, String secondLang, long id);
class Translation {
    @ColumnInfo("text_main")
    String main;
    @ColumnInfo("text_target")
    String target;

    //setters, getters, etc
}

此类仅用作方法的返回值。

是否希望GetPhase方法返回自定义类型对象?什么是
text\u target
text\u main
?我不太清楚。请提供此方法的调用示例和所需结果(例如,
getPhrase(“hello”,“text\u西班牙”)
->X{text\u target=“hola”,text\u main=“hello”}是的,实体类无法映射“text\u de”例如,转换为textTarget,我无法根据匹配我的查询标准更改实体ColumInfo名称,好吧,但是要翻译的单词是如何在这里指定的?或者我们的任务是将表中所有有翻译的单词从目标语言获取到目标语言?我可以想象这样的情况(String currentLanguage、String LanguageToTranslate、String wordToTranslate)问题是,在我的数据库中,我没有“text\u main”,我有“text\u”+语言代码。因此@ColumnInfo(“text\u main”)无法工作我有超过70种语言代码。请仔细阅读:
SELECT:main作为文本\u main,:target作为文本\u目标来自“短语”
class Translation {
    @ColumnInfo("text_main")
    String main;
    @ColumnInfo("text_target")
    String target;

    //setters, getters, etc
}