在jdbi批量插入中使用JSON转换器

时间:2018-04-13 10:07:50

标签: java postgresql jdbc jdbi

假设我有一个包含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执行此操作?

由于

3 个答案:

答案 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);