2016-05-18 1 views
0

私たちのDBには、文字列の配列を内部に保持する@DbJsonBフィールドを持つ複数のエンティティがあります。jbeanb配列をebeanとpsql(クエリシンボル付き)でフィルタリングすることはできますか?

select * from foo_bars where jsonb_tags ? some_tag; 

のようなクエリのシンボルがjsonb_tags配列はsome_tagが含まれていることを意味し、jsonbフィールドの条件でクエリを実行する能力を有することだけで素晴らしいことができます。 または

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

psql docs

ebeanで、この構文を使用することが可能ですか? 今のところ、play.db.DB.getConnection()でプレーンjdbc接続を使用する必要があります。 org.postgresql.util.PSQLException: パラメータany_numberのために指定されていません値ebeanを持つすべての私の試みは、その理由によって引き起こさ

と、のSQLExceptionで終わります。

クエリ文字を何らかの形でエスケープすることは可能でしょうか?

+2

代わりに '?'を使用する必要があります。そうしないと、JDBCドライバは '?'がパラメータであると考えます。 –

+1

DbJsonBの正確なEbeanバージョンとマッピングを含める必要があります。後でEbeanは "シンプルタイプ"のマッピングをサポートし、他のタイプのObjectMapperに戻ります。したがって、マッピングが明示的であることを正確に指定する必要があります。 jsonEqualTo()などのEbean JSON式ではなく@Whereを参照する理由は明確ではありません。 –

+0

@a_horse_with_no_nameはスムーズに動作します。ありがとうございました!!! – Arkady

答えて

0

@a_horse_with_no_nameが指摘しているように、私はダブルを使用しなければなりませんか?私のクエリをエスケープする。

関連する問題