将jdbc记录集映射为具有芭蕾舞女演员中嵌套类型的记录类型

时间:2019-06-06 20:31:01

标签: ballerina

Soooooo,我想使用嵌套记录,并从芭蕾舞女演员中的sql / jdbc recordSet中加载它。

如果我们有:

type Foo record{
  string bar;
  string baz;
}

我们可以从具有匹配形式的resultSet中直接创建Foo记录:

table<Foo>|error dt = testDB->select("SELECT bar,baz FROM ferble",Foo);

但是有办法吗...

type Foo record{
  string bar;
  Baz baz;
}

type Baz record{
  string qux;
  string quxx;
}

table<Foo>|error dt = testDB->select("SELECT bar,qux,quxx FROM ferble",Foo);

虽然在代码中很容易做到,但是当结果很宽时,它将变得非常乏味。如果您尝试创建一条可以转换为模式定义的JSON的记录,那将是很高兴的。

1 个答案:

答案 0 :(得分:0)

type Foo record {
  string bar;
  Baz baz;
}

type Baz record {
  string qux;
  string quxx;
}

table<Foo>|error dt = testDB->select("SELECT bar,qux,quxx FROM ferble",Foo);

在芭蕾舞女演员中不允许这样做。同样,在语义上不允许它是错误的,因为记录类型表示表架构,其中每个列类型都映射到Ballerina记录字段类型。该查询返回一个结果集,该结果集包含3列,每列关联一种类型。然后,您尝试将给定行映射到的Ballerina记录应具有对应的类型作为字段类型。

但是,如果您选择以下内容,

table<Foo>|error dt = testDB->select("SELECT bar,baz FROM ferble",Foo);

其中,baz是数据库中具有qux和quxx字段的用户定义类型/结构类型,然后将其映射到上述Foo记录将是正确的。