无法使用cassandra驱动程序在Cassandra中存储base64图像数据

unable to store base64 image data in Cassandra using cassandra driver

我的客户端应用程序使用 base64 编码将图像数据发送到我的 controller,我认为这是一个字符串。

我把json解析成下面的case class

case class PQ(id: Option[UUID],
                              d: String,
                               h: List[String],
                               image: List[String], 
                              s: String,
                               f:String,
                               t: Set[String],
                              t1: String,
                              a:String,
                               r:List[String])  

在执行数据库查询时,我正在创建 insert 查询,如下所示

def insertValues(tableName:String, model:PQ):Insert = {
    println(s"insert values are ${model}")


    QueryBuilder.insertInto(tableName).value("id",model.id.get)
      .value("a",model.a)
      .value("d",model.d)
      .value("f",model.f)
      .value("h",seqAsJavaList(model.h))
      .value("image",seqAsJavaList(model.image)) 
      .value("r",model.r)
      .value("s",model.s)
      .value("t",setAsJavaSet(model.t))
      .value("t1",model.t1)
      .ifNotExists(); 
  }

数据库架构是

(
    id uuid PRIMARY KEY,
    a text,
    d text,
    f text,
    h list<text>,
    image list<text>,
    r list<text>,
    s text,
    t set<text>,
    t1 text
)

但是我无法将数据保存到数据库中。我要插入的数据是

PQ(Some(11111111-1111-1111-1111-111111111111),some d,List(h),List(some image data),s test,f test,Set(t),some t1,some a,List(r1))

我收到以下错误

insert query is INSERT INTO p_q (id,a,d,f,h,image,r,s,t,t1) VALUES (?,?,?,?,?,?,?,?,?,?) IF NOT EXISTS;
cassandra exception com.datastax.driver.core.exceptions.InvalidTypeException: Value 6 of type class scala.collection.immutable.$colon$colon does not correspond to any CQL3 type

我检测到由于打印件中的 ?????,某些东西正在破坏数据。

问题不在于 image,而在于字段 r。它被定义为 List 但我没有使用 seqAsJavaList 添加它。这正在腐蚀田地。我调试问题的方式可能对其他人有用。

我创建了个人 Insert 查询并打印了它们。它帮助我找到了导致损坏的 Insert

  def insertValues(tableName:String, model:PracticeQuestion):Insert = {
    println(s"insert values are ${model}")


    val r1 = QueryBuilder.insertInto(tableName).value("question_id",model.question_id.get) 
    println(s"after id${r1}")

    val r2 = r1.value("answer",model.answer)
    println(s"after answer ${r2}")

    val r3 = r2.value("description",model.description)
    println(s"after desc ${r3}")

    val r4 = r3.value("fail_test",model.fail_test)
    println(s"after fail ${r4}")

    val r5 = r4.value("hints",seqAsJavaList(model.hints)) 
    println(s"after hints ${r5}")


    val r6 = r5.value("references",seqAsJavaList(model.references))
    println(s"after references ${r6}")

    val r7 = r6.value("success_test",model.success_test)
    println(s"after success ${r7}")

    val r8 = r7.value("tags",setAsJavaSet(model.tags))
    println(s"after tags ${r8}")

    val r9 = r8.value("title",model.title)
    println(s"after title ${r9}")

    val r10 = r9.value("image",seqAsJavaList(model.image))
    println(s"after image ${r10}")

    r10
  }