在没有太多样板的情况下,我无法集中精力获取数据。
问题: 我有一个无法更改的数据库。其中有多个相同类型的字段几乎相同,例如,我有text_en和text_fr(这两个字在不同的语言中都是英语和法语),而我却有+71个相同的字段,但语言不同。
我需要的是
@Entitiy(tableName = "blabla")
class X {
private String textTarget;
private String textMain;
...
}
我应该如何设置Dao界面以获取所需的语言并映射到x类中
例如,更新实体ColumnInfo(name ="text_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")
上面的示例返回以下错误:
error: Not sure how to convert a Cursor to this method's return type
答案 0 :(得分:0)
您在@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
}
此类仅用作方法的返回值。