我有一个父类Queue,它具有以下字段:
根据类型,我将 Queue 分解为更多子类,每个子类都有自己的额外字段。例如:
ProductionQueue extends Queue { startDate, endDate }
ShippingQueue extends Queue { shippingDate, shippingAgent }
...
Run Code Online (Sandbox Code Playgroud)
我在 android studio 中创建了 Queue 作为基类并从中扩展我的子类,但代码无法编译并抱怨缺少字段(子类字段)。下面是一个例子:
ProductionQueue extends Queue { startDate, endDate }
ShippingQueue extends Queue { shippingDate, shippingAgent }
...
Run Code Online (Sandbox Code Playgroud)
在编译时我收到:错误:查询返回的列在 com.example.room.ProductionQueue 中没有字段 [startDate, endDate] 即使它们被注释为非空或原始。查询返回的列:[id,name,type,status]。
[id,name,type,status]来自父类,而[startDate, endDate]子类字段。
在我的应用程序中的各种情况下,我只会列出队列名称、类型和状态,并且我更愿意将队列数据保存在单个表中以便快速查询。
我可以为各个子类创建子表并使用关系,但如果 Room 允许继承,所有这些都可以轻松避免。如果是的话,房间是否支持这种继承,我怎样才能使它工作?
谢谢。
我正在开发一个应用程序,在将数据发送到服务器之前,我们检查字段是否为空并用虚拟数据填充它们.
在向服务器发送数据之前说明:
state = {
title: '',
body: ''
}
Run Code Online (Sandbox Code Playgroud)
我的调度功能:
this.props.dispatch((dispatch) => {
dispatch(initializeProcessForm());
dispatch(processForm(state));
});
Run Code Online (Sandbox Code Playgroud)
在里面initializeProcessForm我检查字段是否为空并适当填充它们,但考虑到我们不应该改变状态,我必须创建一个新的状态对象并返回.
在这里,我松开了对当前的引用(函数完成后的新状态),并且当dispatch(processForm(state))提交给服务器时,它仍然保留带有空白字段的旧数据.
如何在不改变状态反应方式的情况下解决这个问题?
我可以访问新状态的唯一方法是,当我处理成功或拒绝表单时,我在Reducer内部进行API调用,然后转到reducer.
我无法在我的 Dao 中使用 LiveData。删除 LiveData 可以解决编译错误。这是代码:
我查看了我的 Gradle 构建文件。我没有使用任何旧的支持库。我的代码也没有其他一般错误。
基类:
@Entity
@JsonClass(generateAdapter = false)
abstract class BaseEntity(
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "_id")
var id: Long = 0L,
@ColumnInfo(name = "_created_at")
@Json(name = "created_at")
var createdAt: Date = Date(),
@ColumnInfo(name = "_updated_at")
@Json(name = "updated_at")
var updatedAt: Date = Date(),
@ColumnInfo(name = "_created_by")
@Json(name = "created_by")
var createdBy: String = ""
) {
init {
val applicationContext = BaseApp.applicationContext() as BaseApp
val username = applicationContext.sharedPreference?.getString(
applicationContext.getString(R.string.setting_login_username),
""
)
if (username …Run Code Online (Sandbox Code Playgroud)