当前位置: 首页 > 知识库问答 >
问题:

如何实现重复的内部类?

单勇
2023-03-14

数据层次结构是:

    < li >地点 < ul > < li>id < li >名称 < li >图像 < ul > < li >原稿_图像 < ul > < li>id < li >图像url < li >宽度 < li >高度
  • 编号
  • image_url
  • 宽度
  • 高度

原始图像等于缩略图图像。

我的地方类是

@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必须具有可用的公共构造函数。您可以有一个空构造函数,也可以有参数与字段匹配(按名称和类型)的构造函数。公开最终类图像{

共有3个答案

司空丰
2023-03-14

感谢所有回答。

我找到了这个问题的解决方案。

这是我的课程。

@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
}

再次感谢所有的答案!

袁鹤轩
2023-03-14

除非您指定了特定的列名,否则在创建表时,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
}
袁鸿达
2023-03-14

将“图像”类用作实体,就像“放置实体”一样。

 类似资料:
  • 问题内容: 在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的双链列表实现,但它是否像上面那样维护数组,以及如何存储指向下一个和上一个元素的指针? 问题答案: 因此,它具有对象数组。 不完全是。它具有一系列对象 链 。一个对象有一个字段,允许对象