在Ballerina中将jdbc记录集映射为具有嵌套类型的记录类型

在Ballerina中将jdbc记录集映射为具有嵌套类型的记录类型,ballerina,Ballerina,所以我想使用嵌套记录,并从Ballerina中的sql/jdbc记录集中加载它 如果我们有: type Foo record{ string bar; string baz; } 我们可以直接从具有匹配表单的resultSet创建Foo记录: table<Foo>|error dt = testDB->select("SELECT bar,baz FROM ferble",Foo); table | error dt=testDB->select(“select b

所以我想使用嵌套记录,并从Ballerina中的sql/jdbc记录集中加载它

如果我们有:

type Foo record{
  string bar;
  string baz;
}
我们可以直接从具有匹配表单的resultSet创建Foo记录:

table<Foo>|error dt = testDB->select("SELECT bar,baz FROM ferble",Foo);
table | 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);
输入Foo记录{
弦杆;
巴兹巴兹;
}
类型Baz记录{
串qux;
串quxx;
}
表| error dt=testDB->select(“从ferble中选择条、qux、quxx”,Foo);
虽然在代码中很容易做到,但当结果很广泛时,就会变得非常乏味。如果您试图创建一个可以转换为模式定义的JSON的记录,那么最好有一个。

键入Foo-record{
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);
弦杆; 巴兹巴兹; } 类型Baz记录{ 串qux; 串quxx; } 表| error dt=testDB->select(“从ferble中选择条、qux、quxx”,Foo);
这是芭蕾舞演员不允许的。另外,允许它在语义上是不正确的,因为记录类型表示表模式,其中每个列类型都映射到Ballerina记录字段类型。此查询返回一个结果集,该结果集有3列,每列的关联类型为。然后,您尝试将给定行映射到的Ballerina记录应具有相应的字段类型

但如果您选择如下所示

table<Foo>|error dt = testDB->select("SELECT bar,baz FROM ferble",Foo);
table | error dt=testDB->select(“select bar,baz FROM ferble”,Foo);
其中,baz是数据库中带有qux和quxx字段的用户定义类型/结构类型,那么将其映射到前面提到的Foo记录将是正确的。

类型Foo记录{
弦杆;
巴兹巴兹;
}
类型Baz记录{
串qux;
串quxx;
}
表| error dt=testDB->select(“从ferble中选择条、qux、quxx”,Foo);
这是芭蕾舞演员不允许的。另外,允许它在语义上是不正确的,因为记录类型表示表模式,其中每个列类型都映射到Ballerina记录字段类型。此查询返回一个结果集,该结果集有3列,每列的关联类型为。然后,您尝试将给定行映射到的Ballerina记录应具有相应的字段类型

但如果您选择如下所示

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

其中,baz是数据库中带有qux和quxx字段的用户定义类型/结构类型,那么将其映射到前面提到的Foo记录将是正确的。

我问这个问题的原因是它在其他一些框架中工作。由于编译器/运行时知道Baz是非标准/复杂类型(因此无法直接映射到返回的SQL类型),因此可以将下两列映射到复杂类型的字段。查询返回三个值,通过这种方法,这些值将以适当的顺序映射到层次结构中包含的三个“基本”值,就像Ballerina按索引而不是键进行映射一样。但我觉得这样做是不对的。无论如何,请在上创建一个问题,以便芭蕾舞演员团队能够评估这样做的可能性。我问的原因是这在其他一些框架中有效。由于编译器/运行时知道Baz是非标准/复杂类型(因此无法直接映射到返回的SQL类型),因此可以将下两列映射到复杂类型的字段。查询返回三个值,通过这种方法,这些值将以适当的顺序映射到层次结构中包含的三个“基本”值,就像Ballerina按索引而不是键进行映射一样。但我觉得这样做是不对的。无论如何,请在上创建一个问题,以便芭蕾舞团能够评估这样做的可能性。