java - Android 房间数据库
问题描述
在没有太多样板的情况下,我无法理解如何获取数据。
问题:我有一个无法更改的数据库。其中有多个相同类型的字段几乎相同,例如我有 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
解决方案
您在@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
}
此类仅用作方法的返回值。
推荐阅读
- tensorflow - TensorFlow 中 feature_column.embedding_column 和 keras.layers.Embedding 的区别
- entity-framework - 仅针对一项读取操作停止一项全局查询过滤器
- java - 春季批次。使用来自 jobExecutionContext 的参数创建 ItemReader bean
- javascript - Javascript 列表。输入和输出值
- java - 根据较长的输入字符串生成恰好 10 个字符的随机且唯一的密钥
- ajax - 带有 url 的 CSRF 令牌正在工作,但带有表单参数的 CSRF 无效
- tomcat8.5 - 我无法通过 chrome 浏览器访问 Tomcat 管理器,尽管它可以在 Edge 上运行
- javascript - 如何在javascript中单击函数时更改对象属性的值?
- python - 如何在 Firefox 的缓存文件夹中的每个文件中搜索“http”?
- c# - 如何读取没有标题的 CSV