QueryDsl in JSONB column postgresql



我有一个对象,它有jsonb列。有没有任何方法可以使用querydsl查询这个jsonb列?

以下是我的对象示例:

public class Person {
@Type(type = "jsonb")
@Column(columnDefinition = "jsonb")
private PersonDocument personDocument;
}

public class PersonDocument {
private int documentType;
private List<DocumentDetail> documentDetails;
}
public class DocumentDetail {
private String country;
private String documentId;
private LocalDate expiryDate
}

我想按documentId搜索人员,所以我需要转到documentId列

QueryDSL不支持PostgreSQL jsonb列上的查询。我有一个使用QueryDSL的PostgreSQL字段查询解决方案。解决方案步骤:
  1. 使用jsonb列所在的表创建数据库视图。该视图用于将jsonb转换为表的普通表结构。像表A(jjsonb(一样,现在您需要字段";xyz";从";j";表中的jsonb列。可以应用以下查询:

CREATE OR REPLACE VIEW view_b as select a.id as a_id,a->> "xyz" as xyz from A a

现在,查看类似view_b(a_id,xyz)的表结构

  1. 现在您创建了一个表示此视图的域对象。

    @Table(name="view_b") public class ViewB{...}

  2. 现在您可以使用查询DSL进行查询。如qViewB.xyz.eq("值"(

最新更新