数据层次结构是:
原始图像等于缩略图图像。
我的地方类是
@Entity
class PlaceEntity(.....) {
@PrimaryKey
var id: Int = id
var name: String = name
@Embedded
var images: Images = images
}
我的图像课是
class Images(.....) {
@Relation(parentColumn = "origin_id", entityColumn = "id")
var original: Image = original
@Relation(parentColumn = "thumb_id", entityColumn = "id")
var thumbnail: Image = thumbnail
}
我的图像类是
class Image(.....) {
var id: Int = id
var url: String = url
var width: Int = width
var height: Int = height
}
当我编译这个项目时,房间库返回错误
错误:在com.test.room.entity.Images中找不到父实体列< code>origin_id。选项:private com . test . room . entity . image original。
错误:在com.test.room.entity.Images中找不到父实体列< code>thumb_id。选项:private com . test . room . entity . image缩略图。
错误:实体和POJO必须具有可用的公共构造函数。您可以有一个空构造函数,也可以有参数与字段匹配(按名称和类型)的构造函数。公开最终类图像{
感谢所有回答。
我找到了这个问题的解决方案。
这是我的课程。
@Entity
class PlaceEntity(.....) {
@PrimaryKey
var id: Int = id
var name: String = name
@Embedded(prefix = "imgs_")
var images: Images = images
}
class Images(.....) {
@Embedded(prefix = "origin_")
var original: Image = original
@Embedded(prefix = "thumbs_")
var thumbnail: Image = thumbnail
}
再次感谢所有的答案!
除非您指定了特定的列名,否则在创建表时,ROOM会指定与变量名相同的列名。
在您的例子中,您应该给父类<code>@ColumnInfo(name=)</code>注释来指定表的列名,而不是变量名。
因此,PlaceEntity
将是
@Entity
class PlaceEntity(.....) {
@PrimaryKey
@ColumnInfo(name="place_id") // Add this to determine column name
var id: Int = id
var name: String = name
@Embedded
var images: Images = images
}
按关系图像类是< code>PlaceEntity的子级,在您的情况下< code>parentColumn应为< code>place_id。
class Images(.....) {
@Relation(parentColumn = "place_id", entityColumn = "id") // Parent column should be 'place_id'
var original: Image = original
@Relation(parentColumn = "place_id", entityColumn = "id")
var thumbnail: Image = thumbnail
}
将“图像”类用作实体,就像“放置实体”一样。
问题内容: 在Java中,匿名内部类可以在其局部范围内引用变量: 我的问题是这实际上如何实施?如何实现匿名内部实现,为什么必须如此? 问题答案: 编译器会自动为您的匿名内部类生成一个构造函数,并将您的局部变量传递给该构造函数。 构造函数将此值保存在也称为的类变量(字段)中,该变量将在“闭包”中使用。 为什么它必须是最终的?好吧,让我们探讨一下它不在的情况: 在情况A中,还需要更改字段,我们假设这是
我有一个活动,有一些相同类型的片段。我有一份清单。只要我点击一个列表项,我就需要调用一个activity方法,传递点击发生的片段。 我认为这是一个相当愚蠢的问题,但我搞不懂。
San CLI 是一个命令行工具,其次它是一个内置 Webpack 的前端工程化构建工具。San CLI 在架构设计上采取了微核心和插件化的设计思想,我们可以通过插件机制添加命令行命令,还可以通过插件机制定制 Webpack 构建工具,从而满足不同 San 环境的前端工程化需求。 San CLI 在兼顾 San 生态的同时,尽量做到通用化配置,在设计之初,我们希望不局限于 San 的应用范畴,做可
问题内容: C ++具有多重继承。汇编级别的多重继承的实现可能非常复杂,但是在线上通常有很好的说明(vtable,指针修复,thunk等)。 Java没有多重实现继承,但是它确实具有多重接口继承,因此我认为每个类只有一个vtable的直接实现无法实现。java如何在内部实现接口? 我意识到与C++相反,Java是Jit编译的,因此不同的代码段可能会进行不同的优化,并且不同的JVM可能会做不同的事情
变量的内部实现 变量是一个语言实现的基础,变量有两个组成部分:变量名、变量值,PHP中可以将其对应为:zval、zend_value,这两个概念一定要区分开,PHP中变量的内存是通过引用计数进行管理的,而且PHP7中引用计数是在zend_value而不是zval上,变量之间的传递、赋值通常也是针对zend_value。 PHP中可以通过$关键词定义一个变量:$a;,在定义的同时可以进行初始化:$a
问题内容: 我读到HashMap具有以下实现: 因此,它具有一个Entry对象数组。 问题: 我想知道在相同hashCode但不同对象的情况下,此数组的索引如何存储多个Entry对象。 这与实施有何不同?它的map的双链列表实现,但它是否像上面那样维护数组,以及如何存储指向下一个和上一个元素的指针? 问题答案: 因此,它具有对象数组。 不完全是。它具有一系列对象 链 。一个对象有一个字段,允许对象