使用jooq更新hstore字段

时间:2015-01-09 15:35:44

标签: java sql postgresql jooq hstore

是否有人知道可以使用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

1 个答案:

答案 0 :(得分:2)

这很有可能,但尚未支持开箱即用。为了实现您自己的HSTORE支持,您需要:

1。实施org.jooq.Binding

此绑定将用于数据库中的所有HSTORE列。它将负责处理用户类型<U>(例如Map<String, String>)与JDBC的交互,以生成数据库类型<T>(例如String或{ {1}})。

有关如何使用PGobject类型执行此操作的示例,请参见此处:

JSON类型的工作方式大致相同

2。通过纯SQL

实现自己的运算符

PostgreSQL有许多特定于供应商的运营商,这些运营商采用特定于供应商的数据类型。这些运算符需要通过纯SQL实现。例如:

HSTORE