房间数据库:如何从字符串资源中设置默认值

Room database : How set default Value from strings resources

如何从字符串等资源中设置某些字段的默认值。因为我想为不同的语言设置值

@ColumnInfo(defaultValue = "") // R.string.someword
private String publisher;

尝试时:

@ColumnInfo(defaultValue = Resources.getSystem().getString(android.R.string.someword)) 
private String publisher;

得到如下错误

Attribute value must be constant

简而言之,您不能因为这样的值可以在 运行 时更改,而 Room 构建 SQL 在编译时创建表、索引和视图。

默认 = "" 参数用于将值应用于 CREATE TABLE .... sql 的 DEFAULT 构造。

如果你编译成功你可以看到生成的SQL它在java生成的(Android视图)中与@Database[=同名的文件中20=] 但后缀为 _Impl.