这两个是否可以在Room数据库实体的上下文中互换,或者,如果没有,它们之间有什么区别?
答案 0 :(得分:15)
task.maxFailures=F
是一个特定于房间的注释,说房间应该忽略该字段或方法。
@Ignore
是一个Java构造,表示this field should not be serialized in standard Java serialization。 Room happens to treat this similarly to @Ignore
by default。大多数情况下,如果您从某些类继承而恰好使用transient
并且您无法控制该类(例如,它来自库)。
对于您自己的代码,如果您不使用Java序列化,我建议您坚持使用transient
字段。 @Ignore
不是方法的可用关键字,因此要告诉Room忽略某些构造函数,您别无选择,只能使用transient
。
答案 1 :(得分:2)
添加到CommonsWare的答案
for root, dirs, files in os.walk(directory):
for f in files:
files_returned.append(f)
不适合忽略Room的字段,因为CommonsWare会回答。当使用相同的模态从服务器解析数据并存储到数据库中时,它将创建阻止程序。
假设您有一个模态类transient
,如下所示
MyModal.java
如果您不想将booleanField保存到数据库中,并且将该字段修改为
public static class MyModal {
@SerializedName(“intField”)
public int intField;
@SerializedName(“strField”)
public String strField;
@SerializedName(“booleanField”)
public boolean booleanField;
}
:保存到数据库时会忽略此字段,但在解析来自服务器的数据时也会忽略此字段。 transient
:它只会在将数据插入数据库时忽略此字段,但此字段将参与json解析。