假设我有一个包含2列的postgres表。
form1.cs
现在我正在使用jdbi进行批量插入
id: text
name: jsonb
SomeObject看起来像这样:
@SqlBatch("INSERT INTO something (id, name) VALUES (:id, :name)"
void batchUpdate(@BindBean List<SomeObject> someObjectList);
所以基本上我想要在插入之前批量插入一个包含需要转换为json的对象的bean。有没有办法在使用批量插入时使用jdbi执行此操作?
由于
答案 0 :(得分:1)
类似下面的东西对我有用。
实例属性本身的 Json 注释对我不起作用。所以必须在 getter 上使用。
文档是 here
public class SomeObject{
String id;
SomeNameObject name;
@Json
public getName() {
return this.name;
}
//constructor and so on
}
答案 1 :(得分:0)
使用Rosetta文档,我认为您应该可以使用@BindWithRosetta
&amp; @StoredAsJson
注释。
@SqlBatch("INSERT INTO something (id, name) VALUES (:id, :name)"
void batchUpdate(@BindWithRosetta List<SomeObject> someObjectList);
public class SomeObject{
String id;
@StoredAsJson
SomeNameObject name;
//constructor and so on
}
答案 2 :(得分:0)
老实说,对我有用的是使用字符串并将其强制转换为查询 所以如下所示:
public class SomeObject{
String id;
// SomeNameObject name; // change this to a string
String name;
//constructor and so on
}
和查询
@SqlBatch("INSERT INTO something (id, name) VALUES (:id, CAST(:name as jsonb))" // add cast here
void batchUpdate(@BindBean List<SomeObject> someObjectList);