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

Android Room数据库:如何处理实体中的Arraylist?

阎宝
2023-03-14

我刚刚实现了离线数据保存的空间。但在实体类中,我会得到以下错误:

Error:(27, 30) error: Cannot figure out how to save this field into database. You can consider adding a type converter for it.

类如下:

@Entity(tableName = "firstPageData")
public class MainActivityData {

    @PrimaryKey
    private String userId;

    @ColumnInfo(name = "item1_id")
    private String itemOneId;

    @ColumnInfo(name = "item2_id")
    private String itemTwoId;

    // THIS IS CAUSING THE ERROR... BASICALLY IT ISN'T READING ARRAYS
    @ColumnInfo(name = "mylist_array")
    private ArrayList<MyListItems> myListItems;

    public String getUserId() {
        return userId;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }

    public ArrayList<MyListItems> getMyListItems() {
        return myListItems;
    }

    public void setCheckListItems(ArrayList<MyListItems> myListItems) {
        this.myListItems = myListItems;
    }

}

提前道谢。

共有1个答案

段干安和
2023-03-14

选项1:使MyListItemsMainActivityData一样,成为@EntityMyListItems将设置@ForeignKey返回到MainActivityData。但是在这种情况下,mainactivitydata不能有私有ArrayList MyListItems ,因为在Room中,实体不引用其他实体。但是,视图模型或类似的POJO构造可以具有MainActivityData及其关联的ArrayList

选项2:设置一对@TypeConverter方法,将ArrayList 转换为某些基本类型(例如,使用JSON作为存储格式的String)。现在,MainActivityData可以直接拥有它的ArrayList 。但是,MyListItems没有单独的表,因此您不能很好地查询MyListItems

 类似资料:
  • 我正在尝试实现简单的登录系统。我有一个JSP,其中用户输入用户名和密码,然后servlet读取这些参数。您将从servlet代码中了解: 如果我输入了有效的用户名和密码,这会起作用,但如果我没有输入,则会出现下一个异常: 处理这种情况的正确方法是什么?我想输入错误的用户名和密码参数以显示适当的消息(在“loginMessage”变量中转发)。 [添加]这是UserDAOBean中的代码: 实体用户

  • 我有一个可以监听Firebase实时数据库中的任何值更改。在线模式下,一切正常。 但在脱机模式下,设备处于脱机状态,我的Web服务器在Firebase实时数据库上完成了多个事务,其值与我从Android中输入的侦听器的值相同。设备联机后,它将只侦听最后一个事务,并跳过其间完成的其他事务。 PFB参考链接。到目前为止我已经完成的PFB代码:

  • 问题内容: 我使用Hibernate的主要原因之一是它提供了无需切换任何代码即可切换到另一个数据库的灵活性。 但是直到现在,我还没有找到在与我的hibernate实体匹配的表上定义其他视图的好方法。我仍然为此使用简单的SQL脚本。有没有一种更优雅的方式来定义由hibernate管理的表上的视图? 理想情况下,我想使用HQL或其他通用方法来完成这项工作,因此我不必担心我的SQL脚本与其他类型的数据库

  • 问题内容: 我正在使用MySQL数据库,我想知道是否同时进行多个(500个或更多)查询以便从多个表中获取信息,这些查询如何处理?顺序还是并行? 问题答案: 查询总是在多个会话(即客户端连接)之间并行处理。单个连接上的所有查询都一个接一个地运行。可以根据您可用的服务器资源来配置多个连接之间的并行度。 通常,某些操作在各个查询会话之间被保护(称为事务)。这些由InnoDB后端支持,但MyISAM表不受

  • 问题内容: 由于数据库表中的值为空,我得到“ org.hibernate.PropertyAccessException” 。如何处理异常? 我的档案是 FetchTest.java FetchTest.java Employee.java hibernate.cfg.xml employee.hbm.xml When I ran this application I am getting bel

  • 问题内容: 我有一个包含Glassfish 3.1.2.2,MySQL数据库和Swing客户端应用程序的3层应用程序。是否有可能处理数据库服务器崩溃? 我试图在应用程序运行期间停止MySQL服务。然后,每当我尝试通过我的Facade会话bean之一访问数据库时,我都会获得javax.ejb.EJBAccessException异常。 我想通知用户该数据库当前已关闭。此外,我想将我的应用程序设置为“