是否有人知道可以使用JOOQ在 hstore 中按键更新值,除了执行普通的sql。 例如,我有表产品
id | characs | name
----+----------------------------------------------------------------------------+--------------
1 | "key"=>"value", "key3"=>"test2" | test1
2 | "key"=>"value" | test3
3 | "keyNew"=>"valueNew" | test3
4 | "keyNew"=>"valueNew" | test4
5 | "date"=>"Dec 2012", "price"=>"500", "author"=>"Dave", "currency"=>"dollar" | test5
我想按键 key3 更新值。为此我可以执行普通的sql:
UPDATE products SET name='test1New', characs=characs || '"key3"=>"value3"'::hstore where id=1
是否可以使用JOOQ的 DSL ?
答案 0 :(得分:2)
这很有可能,但尚未支持开箱即用。为了实现您自己的HSTORE支持,您需要:
org.jooq.Binding
此绑定将用于数据库中的所有HSTORE列。它将负责处理用户类型<U>
(例如Map<String, String>
)与JDBC的交互,以生成数据库类型<T>
(例如String
或{ {1}})。
有关如何使用PGobject
类型执行此操作的示例,请参见此处:
JSON
类型的工作方式大致相同
PostgreSQL有许多特定于供应商的运营商,这些运营商采用特定于供应商的数据类型。这些运算符需要通过纯SQL实现。例如:
HSTORE