В нашей базе данных есть несколько объектов с полями @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;
Можно ли использовать этот синтаксис с ebean? На данный момент я должен использовать обычное соединение jdbc в некоторых случаях с play.db.DB.getConnection(). Все мои попытки с ebean заканчивается SQLExceptions, с причиной
Вызванный: org.postgresql.util.PSQLException: Не задано значение для параметра any_number.
Может быть, возможно избежать символа запроса каким-то образом?
Вместо этого вам нужно использовать '??', иначе драйвер JDBC будет считать параметр '?'. –
Вам нужно указать точную версию Ebean и сопоставление для DbJsonB. Позднее Ebean поддерживает сопоставление «простых типов» и возвращается к ObjectMapper для других типов, поэтому вы должны точно указать, что именно отображается в вашем сопоставлении. Непонятно, почему вы ссылаетесь на @Where, а не на выражения Ebean JSON, такие как jsonEqualTo() и т. Д. –
@a_horse_with_no_name работает плавно. Спасибо!!! – Arkady