2016-05-18 7 views
0

В нашей базе данных есть несколько объектов с полями @DbJsonB, в которых хранятся массивы строк внутри. Это может быть просто замечательно иметь возможность выполнять запросы с условиями для jsonb полей, какМожно ли фильтровать jsonb массивы с ebean и psql (с символом запроса)?

select * from foo_bars where jsonb_tags ? some_tag; 

символ запроса означает, что jsonb_tags массив содержит some_tag. или

@ManyToMany 
@Where(clause = "roles ? SOME_ROLE") 
private List<User> usersWithSomeRole; 

psql docs

Можно ли использовать этот синтаксис с ebean? На данный момент я должен использовать обычное соединение jdbc в некоторых случаях с play.db.DB.getConnection(). Все мои попытки с ebean заканчивается SQLExceptions, с причиной

Вызванный: org.postgresql.util.PSQLException: Не задано значение для параметра any_number.

Может быть, возможно избежать символа запроса каким-то образом?

+2

Вместо этого вам нужно использовать '??', иначе драйвер JDBC будет считать параметр '?'. –

+1

Вам нужно указать точную версию Ebean и сопоставление для DbJsonB. Позднее Ebean поддерживает сопоставление «простых типов» и возвращается к ObjectMapper для других типов, поэтому вы должны точно указать, что именно отображается в вашем сопоставлении. Непонятно, почему вы ссылаетесь на @Where, а не на выражения Ebean JSON, такие как jsonEqualTo() и т. Д. –

+0

@a_horse_with_no_name работает плавно. Спасибо!!! – Arkady

ответ

0

Как @a_horse_with_no_name указал, мне пришлось использовать double ?? чтобы избежать моего запроса.

 Смежные вопросы

  • Нет связанных вопросов^_^