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

在Room Db中插入列表时出错

薄欣怿
2023-03-14

我从API中得到了一个字符串列表,当我尝试插入Room Db时,我得到了一个错误-

参数的类型必须是用@Entity批注的类或它的集合/数组。

 @Insert(onConflict = OnConflictStrategy.REPLACE)
    fun insertAll(list: List<String>).        --> this method giving error

这是它的桌子

@Entity(tableName = "insuree")
public class Insuree {
    @ColumnInfo(name = "insurerName")
    @NonNull
    public String insurerName;

    @PrimaryKey(autoGenerate = true)
    @ColumnInfo(name = "_id")
    public int id;
}

我如何解决这个错误,或者有没有其他的方法让这个东西工作。

共有1个答案

长孙嘉容
2023-03-14
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insertAll(list: List<String>).        --> this method giving error

在这种情况下,Room无法确定要将数据插入到哪个表中。

也就是说,当使用@INSERT注释时,Room根据要插入的对象的类来确定要插入的表,并且只有使用@Entity定义了类(这样它是向Room注册/理解的类型)。然后可以从类/实体确定构建底层代码时要使用的实际表名。

因此,看来您应该:-

fun insertAll(list: List<Insuree>) 
fun insertAll(insurees: List<Insuree>)

然后需要从字符串数组中创建一个Insuree对象列表,例如。

    String[] insureeStringList = new String[]{"Insurer1","Insurer2","Insurer3"}; //<<<<< The list of Insurer names
    ArrayList<Insuree> insurees = new ArrayList<>();
    Insuree i = new Insuree();
    for (String insuree: insureeStringList) {
        i.insurerName = insuree;
        insurees.add(i);
    }
    // insurees is a List of Insuree objects
    appDatabase.insureeDao().insertAll(insurees);
 类似资料:
  • 问题内容: 当使用“ ALTER TABLE tab ADD col”时,新列将添加到表的末尾。例如: 桌子会变成 但是,正如我的示例列的命名所暗示的那样,我实际上希望表最终像这样: 在COL_4之前使用COL_3。 除了从头开始重建表之外,是否还有任何标准的SQL可以完成工作?但是,如果没有标准的SQL,我仍然可以使用一些与供应商相关的Oracle解决方案,但是最好还是使用标准解决方案。 谢谢。

  • 问题内容: 我有一个列的表。现在,我需要在和列之间添加一个新列。如何在两列之间添加新列? 问题答案: 您有两个选择。首先,您可以简单地添加带有以下内容的新列: 其次,更复杂的是,实际上会将列放在所需的位置,这将是重命名表: 然后使用缺少的列创建新表: 并用旧数据填充它: 然后删除旧表: 我更喜欢第二个选项,因为它可以让您在需要时完全重命名所有内容。

  • 我有一个将数据插入PostgreSQL表的Mulesoft流。数据类型为JSON。这是数据的副本:(我从调试器中抓取了这个,因为它即将调用插入命令) 当我尝试将其插入JSON列时,我得到了这个错误 所以我决定把它插入一个文本列,这就是它的样子 请注意,在“id”之后添加了“=”而不是“:”,并删除了引号。 我不知道为什么会这样。基本上,我只需要将JSON数据插入JSON列。 谢谢

  • 我正在我的ubuntu 18.04机器上运行mongo shell。我正在集合中插入文档 我尝试创建多个键,如:'db。Pricing.insert({key1:{key1a: value}, key2:{key2a: value},{key2b: value}, key3:{key3a: value}})' ”“db。定价插入({图像:{“在书中使用”:100},纸张:{“在书中”:0-20},

  • 我试图在列表中的列表中插入一些东西,但是我不知道该怎么做。 例如,我有一个列表列表: 我想将插入子列表,索引为0,位于元素之后,所以它看起来像这样:

  • 我有一个下拉循环,当我尝试从下拉列表中选择一个数字时,它会发出回声。但是当我插入它时,它不会执行,也不会显示在数据库中。但是,当我将$\u POST值更改为静态数字时,它会插入并显示。比如$x=$_POST['category'];它不插入,但$x=3;它在数据库中插入了以下内容: