У меня есть таблица ниже 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;
}
Мне нужна помощь в переводе вышеуказанного запроса в спецификацию с использованием построителя критериев.