我在下表 temp_tbl (postgres)中:
ID(int) NAME(TEXT) LINKS(jsonb)
-------- ---------- -------------------
1 Name1 ["1","23","3", "32]
2 Name2 ["11","3","31", "2]
3 Name3 ["21","13","3", "12]
现在,我的本机查询要获取具有“ LINKS”且值为“ 3”的行:
select * from temp_tbl where links @> '["3"]'
返回第2行和第3行。
我想使用org.springframework.data.jpa.domain.Specification来实现此查询
我已经实现了类似于下面的内容,其中jsonb列不是数组,但是使用 jsonb_extract_path_text 具有键值json。但是上面的列仅将值存储在数组中。
我的实体类。
@Entity
@Table(name = "temp_tbl")
public class TempTbl {
@Id
@Column(name = "ID")
private Long id;
@Column(name = "NAME", nullable = false)
private String name;
@Column(name = "LINKS", columnDefinition = "jsonb null")
@Convert(converter = JsonbConverter.class)
private List<String> linkIds;
}
在使用criteriabuilder将上述查询转换为规范时,我需要帮助。