Android Room:应用与嵌入对象相关的多列

2024-04-19

在我的 Android 应用程序中,我使用 Room 进行数据存储。我目前面临的问题是,我需要在嵌入对象的 @Relation 中放入 2 列,因为关系依赖于 2 列。结构见下图:

@Entity(tableName = "damages")
public class Damage {
    @PrimaryKey(autoGenerate = true)
    @NonNull
    private Long id;
    @NonNull
    private Long projectId;
    @NonNull
    private Long codeId;
    private String description;
    ...
}

@Entity(tableName = "damage_codes")
public class DamageCode {
    @PrimaryKey(autoGenerate = true)
    @NonNull
    private Long id;
    @NonNull
    private Long projectId;
    @NonNull
    private String name;
    private String description;
    @NonNull
    private String code;
    @NonNull
    private String damageType;
    ...
}

@Entity(tableName = "damage_types")
public class DamageType {
    @PrimaryKey(autoGenerate = true)
    @NonNull
    private Long id;
    @NonNull
    private Long projectId;
    @NonNull
    private String ttype;
    private String description;
    ...
}

public class DamageWithCode {
    @Embedded public Damage damage;
    @Relation(
        entity = DamageCode.class,
        parentColumn = "codeId",
        entityColumn = "id"
    )
    public DamageCodeAndType code;
    public Damage getDamage() {
        return damage;
    }
    public DamageCodeAndType getCode() {
        return code;
    }
}

public class DamageCodeAndType {
    @Embedded public DamageCode code;
    @Relation(
        parentColumn = "damageType",
        entityColumn = "ttype"
    )
    public DamageType damageType;
    public DamageCode getCode() {
        return code;
    }
    public DamageType getDamageType() {
        return damageType;
    }
}

在我的 DamageDAO 中,我有以下方法:

@Transaction
@Query("SELECT * FROM damages WHERE projectId=:projectId")
public List<DamageWithCode> getDamages(Long projectId);
@Query("SELECT * FROM damages WHERE id=:id")
public DamageWithCode getDamage(Long id);

问题:在 @Relation 中的 DamageCodeAndType 类中,我不仅需要指定 DamageType 作为parentColumn,还需要指定projectId。此外,在entityColumn 中,我需要将projectId 添加到ttype 列。我怎样才能做到这一点?这样的事情可能吗?

    public class DamageCodeAndType {
    @Embedded public DamageCode code;
    @Relation(
        parentColumn = {"damageType","projectId"},
        entityColumn = {"ttype","projectId"}
    )
    public DamageType damageType;
    public DamageCode getCode() {
        return code;
    }
    public DamageType getDamageType() {
        return damageType;
    }
}

如果这是不可能的,任何人都可以指出我如何解决这个问题。谢谢。


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android Room:应用与嵌入对象相关的多列 的相关文章

随机推荐

  • 为什么通过 hudson 进行 git fetch 会失败,而通过命令行进行 git fetch 却可以?

    我正在尝试从 github 获取只读 git 存储库 并通过 hudson 构建它 这个过程失败了 这是哈德逊输出 Started by an SCM change Checkout workspace d hudson home jobs
  • Mongodb 复制主日志中的“[conn557392] Killcursors:找到 0 of 1”

    我现在正在运行 2 6 版本的生产 mongodb 复制 今天我发现主mongod实例不断写日志 conn557392 killcursors found 0 of 1 我检查了db serverStatus metrics cursor
  • 如何在javascript中旋转输入类型范围拇指?

    我有一个
  • 如何从位于另一个程序集中的BackgroundWorker 数据绑定ProgressControl?

    我有一个使用 Galasoft MVVM Toolkit 以 WPF 作为客户端的多程序集项目 我想知道如何将 ProgressControl 的 Value 属性数据绑定到 BackgroundWorker 的 ProgressChang
  • 如何获取对话框/窗口的背景颜色?

    如何获取 RGB 格式的对话框 窗口的背景颜色 Use QWidget palette访问小部件的调色板和QPalette color获取背景颜色 color widget palette color QPalette Background
  • cmake 发现错误的 python 库

    我是 CMake 新手 无法理解一些使用概念 我正在从 C 程序调用 python 脚本 include
  • 使用预加载图像以外的其他内容

    首先 我应该使用预加载图像 还是应该使用其他东西来完成我想做的事情 我开始认为预加载图像与我想要完成的任务无关 我想做的是 我想防止图像的转换效果 即您看到的闪烁 我有一个播放按钮 初始屏幕上没有图像 当您单击它时 会出现一个图像 这就是您
  • 本地主机上的服务器 App Engine Standard 无法启动

    从 eclipse 中 我创建了一个 Google App Engine 标准项目 并尝试在本地 App Engine 上运行它 它没有启动并抛出以下错误 java lang NullPointerException at java bas
  • 根据所选数字指定数字范围

    当用户选择数字 1000243 时 我想要另一个选项来从该输入的数字中选择 200 个数字 所以它会是 User Input Number Here
  • 需要用jquery将h3和div包装在包装器div中

    我有以下 HTML div class accordion h3 My title h3 div My content div h3 My title h3 div My content div h3 My title h3 div My
  • 如何从 Ionic 选项卡打开 Ionic 模态

    我有一个用例 我想通过单击 Ion 选项卡来打开 Ionic Modal 我们的应用程序有 4 个固定的ion tabs 其中一个选项卡当前转到评论表单 但它更适合作为模式 因此用户可以快速完成表单并返回到他们正在做的事情 模态框通常附加到
  • Python CSV 编写器截断长数字

    我目前正在开发一个项目 该项目需要生成一个包含大量信息的 CSV 文件作为最终输出 目前 我将所有数据存储在一个非常大的列表中 然后使用 CSV 包将其写入 CSV 文件 我的问题是其中一个数据字段包含一个非常长的数字 存储为字符串 但第
  • Swift 栈和堆的理解

    我想快速了解堆栈和堆中存储的内容 我有一个粗略的估计 您打印的所有内容和内存地址都不是值 它们存储在堆栈中 而作为值打印出来的内容则在堆上 基本上根据值和引用类型 我完全错了吗 或者 您可以提供堆栈 堆的可视化表示吗 As Juul htt
  • 如何在 Firebase 实时数据库中保存本地数据?

    我对 Kotlin 和编程非常陌生 目前正在制作包含事件的日历 当我想将这些事件连接到 firebase 时 我的问题就出现了 我正在使用在 git 中找到的一个示例 https github com kizitonwose Calenda
  • 使用鼠标滚动 DataGridView

    因此 我们都熟悉单击并按住鼠标按钮 然后将鼠标移动到网格边缘 列 行滚动并且选择范围增加的功能 我有一个基于 DataGridView 的控件 由于性能问题 我必须关闭 MultiSelect 并自行处理选择过程 现在单击 按住滚动功能也被
  • 在matlab中对矩阵元素求和的有效(最快)方法

    让我们有矩阵A say A magic 100 我见过两种计算矩阵所有元素之和的方法A sumOfA sum sum A Or sumOfA sum A 其中一个比其他更快 或更好的练习 吗 如果有的话是哪一个 或者它们都同样快 看来你无法
  • 使用 PHPMailer 附加文​​件

    我有一个 HTML 表单 可以选择上传文件 然后 我想将该文件作为附件与其余表单数据一起发送到电子邮件地址 我正在使用 PHP Mailer 我获取要发送的表单数据 例如姓名 电话号码等 我无法将图像与它一起发送 我已经提供了迄今为止的代码
  • 如何在 Android 应用程序中播放和停止 mp3 文件

    我在 eclipse 中创建了一个应用程序来播放和停止 mp3 文件 一切都很好 除了当我播放音频文件并停止它并且我想重播它时 播放 btn 不起作用 我想知道是否有人可以帮助我 提前致谢 代码如下 package ir polyglotc
  • 更改 NUnit 测试的名称

    我希望我的单元测试基于NUnit在 Visual Studio 测试资源管理器中命名的框架更易于理解 例如 而不是有Test Case 1 or TestCase1我最好有类似的东西Test Case 1 Category First Ca
  • Android Room:应用与嵌入对象相关的多列

    在我的 Android 应用程序中 我使用 Room 进行数据存储 我目前面临的问题是 我需要在嵌入对象的 Relation 中放入 2 列 因为关系依赖于 2 列 结构见下图 Entity tableName damages public