2016-05-18 7 views
0

Unsere DB hat mehrere Entitäten mit @ DbJsonB Feldern, die Arrays von Strings enthalten. Es könnte nur groß seine Fähigkeit zu haben, Abfragen mit Bedingungen für jsonb Felder auszuführen, wieIst es möglich, Jsonb-Arrays mit Ebean und Psql (mit Abfrage-Symbol) zu filtern?

select * from foo_bars where jsonb_tags ? some_tag; 

Abfrage Symbol bedeutet, dass jsonb_tags Array some_tag enthält. oder

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

psql docs

Ist es möglich, diese Syntax mit ebean zu benutzen? Für jetzt muss ich in einigen Fällen plain jdbc Verbindung mit play.db.DB.getConnection() verwenden. Alle meine Versuche mit ebean endet mit SQLExceptions, mit dem Grund

Verursacht durch: org.postgresql.util.PSQLException: kein Wert angegeben für Parameter any_number.

Kann es sein, Abfragezeichen in irgendeiner Weise zu entkommen?

+2

Sie müssen '??' stattdessen verwenden - andernfalls wird der JDBC-Treiber denken, dass '' 'ein Parameter ist. –

+1

Sie müssen die genaue Ebean-Version und das Mapping für DbJsonB einschließen. Später unterstützt Ebean das Mappen von "einfachen Typen" und greift für andere Typen auf den ObjectMapper zurück, so dass Sie genau angeben sollten, was Ihr Mapping explizit ist. Es ist nicht klar, warum Sie auf @Woher statt auf die Ebean JSON-Ausdrücke wie jsonEqualTo() usw. verweisen. –

+0

@a_horse_with_no_name reibungslos arbeiten. Vielen Dank!!! – Arkady

Antwort

0

Als @a_horse_with_no_name zeigte, musste ich double ?? um meiner Anfrage zu entkommen.