【发布时间】:2018-06-25 01:22:41
【问题描述】:
我使用 Room 作为应用程序的数据库。我有一个场景,其中某种类型的Object 需要存储在单独的表中。举个例子,我们以Object 为例,称为Book.java
现在,我想要两个 SQL 表:
- Books_Read
- Books_To_Read
请忽略 SQL DB 的任何命名约定 - 这只是一个示例
问题
通常,在Book.java 类中使用@Entity(tableName = "Books_Read") 并有一个DAO 类将使用该表名。
问题是;然后我如何能够使用相同的 Book.java 类存储在 Books_To_Read 表中?因为我已经将@Entity(tableName = "Books_Read") 定义为Book.java 类的一部分,我看不到在哪里为Book.java 类定义Books_To_Read 表
我能想出的唯一解决方案是创建一个新类——我们称之为BookToRead.java,它扩展Book.java,并在类中定义@Entity(tableName = "Books_To_Read")。
问题
有没有更好的方法来做到这一点,或者这是处理它的预期方法?
【问题讨论】:
-
我的意思是如果它是同一个实体 - 那你为什么要为此使用不同的表呢? Imo 它应该是同一张表,但只有额外的列,如“to_read”或其他。
-
@rom4ek 你是对的。我在发布这个问题后不久就意识到了这一点。我最终通过添加一个表和一个新列来区分不同类型来解决它。
-
我不确定这是否仅与这种特殊情况有关,但是在表格中有一个额外的字段/列来说明这本书是否被阅读过,不会做这项工作吗?为什么要将它们存储在不同的表中?
-
我也有类似的问题。数据可能会在 24 小时后过时,所以我会在此时间后删除所有保存的数据。因此,生病删除天气我喜欢删除对象(删除存储在 obj 中的布尔变量)。因此我可能需要另一个表和/或共享首选项中的标志。目前也在使用房间。
标签: android sql database database-design android-room