Hi Daniel, The warning message happens because jOOQ doesn't know how to bind your Gson JsonObject to a JDBC statement when you pass it to the DSL.val() method. You have several options, but they all work the same way. You need to tell jOOQ how to bind (or convert) that type. I imagine that you wrote your own binding: https://www.jooq.org/doc/latest/manual/sql-building/queryparts/custom-bindings
... and then used the code generator configuration to associate that binding with your FOO.BAR column: https://www.jooq.org/doc/latest/manual/code-generation/custom-data-type-bindings So, you could use DSL.val(Object, Field) or val(Object, DataType) to bind your sourceKey: - https://www.jooq.org/javadoc/latest/org/jooq/impl/DSL.html#val-java.lang.Object-org.jooq.Field- - https://www.jooq.org/javadoc/latest/org/jooq/impl/DSL.html#val-java.lang.Object-org.jooq.DataType- Next step would be to make this operator reusable: public static Condition jsonContains(Field<JsonObject> field, JsonObject value) { return DSL.condition("{0} @> {1}", field, DSL.val(value, field)); } And now, completely type safe: where(jsonContains(FOO.BAR, sourceKey)) I hope this helps, Lukas 2017-05-08 6:24 GMT+02:00 Daniel Einspanjer <[email protected]> : > I was struggling a bit with this over the weekend. FOO is a table with a > column BAR which is a JSONB type field. > I have the generator hooked up with Gson and the signature for FOO.BAR is > a JsonElement. > > For an example, a row in the table might have the jsonb value for bar: > {"a": 1, "b": 2} > And my sourceKey JsonObject would be {"b": 2} > > Kept getting errors such as: > WARN Caused by: org.jooq.exception.SQLDialectNotSupportedException: Type > class com.google.gson.JsonObject is not supported in dialect DEFAULT > > I tried a few different ways: > .where(DSL.sql("{0} @> {1}", FOO.BAR, > DSL.val(sourceKey))) > > .where(DSL.sql("{0} @> {1}", FOO.BAR, > DSL.val(sourceKey))) > > .where(DSL.sql("{0} @> {1}::jsonb", FOO.BAR, > DSL.val(sourceKey.toString()))) > > -- > You received this message because you are subscribed to the Google Groups > "jOOQ User Group" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "jOOQ User Group" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
