jsonb - весенний поиск - PullRequest
0 голосов
/ 03 июня 2018

Как мне выполнить запрос

select * from companies where data->>'inn' like '%12%'

, используя org.springframework.data.jpa.domain.Specification?

class CompanySpecification : Specification<Company>{
    override fun toPredicate(root: Root<Company>, query:CriteriaQuery<*>, criteriaBuilder: CriteriaBuilder): Predicate? {
        return criteriaBuilder.like(root.get("data-->inn"), "%12%")
    }
}

1 Ответ

0 голосов
/ 04 июня 2018

Я нашел решение

class CompanySpecification : Specification<Company> {

    override fun toPredicate(root: Root<Company>, query: CriteriaQuery<*>, builder: CriteriaBuilder): Predicate {
        return builder.like(builder.function("jsonb_extract_path_text", String::class.java, root.get<String>("data"), builder.literal("inn")), "12%")
    }

}
...