Как запросить столбец JSONB с помощью спецификации данных Spring? - PullRequest
0 голосов
/ 10 мая 2019

У меня есть таблица ниже 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]

Теперь мой собственный запрос для получения строк, в которых есть «ССЫЛКИ» со значением «3»:

    select * from temp_tbl where links @> '["3"]'

возвращает строки 2 и 3.

Я хочу реализовать этот запрос, используя org.springframework.data.jpa.domain.Specification

Я реализовал что-то вроде ниже, где столбец jsonb не является массивом, но имеет значение ключа json, используя jsonb_extract_path_text . Но в приведенном выше столбце хранятся только значения в массиве.

Мой класс сущности.

@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;
}

Мне нужна помощь в переводе вышеуказанного запроса в спецификацию с использованием построителя критериев.

...