我有一个我想用休眠(java)查询的表
例如,此表有2列
full_name | age
---------------------
Mr Dony | 30
Mrs Clark | 32
Doc Who | 43
我想将Doc替换为Doctor的每个值,显示条件结果将如下所示:
full_name | age
---------------------
Mr Dony | 30
Mrs Clark | 32
Doctor Who| 43
我不想编辑虚拟表数据
我只想使用诸如replace-subString之类的东西,如何使用休眠方式实现呢?
如果这很重要,我的数据库是PostgreSQL和vertica
最佳答案
休眠的方言恰好适合此工作。您可以做的是:
根据实际的PostgreSQL版本,实现org.hibernate.dialect.PostgreSQL81Dialect
的子类或其任何后代。
如下所示注册一个自定义函数(请参见PostgreSQL81Dialect的构造函数)。
用休眠声明您的方言
然后像使用本地查询update table_name set full_name = replace(full_name, 'Doc', 'Doctor')
一样使用它。请注意,这会将所有“ Doc”事件替换为“ Doctor”。public class PostgreSQL81DialectEx extends PostgreSQL81Dialect { public PostgreSQL81DialectEx() { registerFunction( "replace", new SQLFunctionTemplate(StandardBasicTypes.STRING, "replace(?1, ?2, ?3)") ); }}
关于java - 用Hibernate select查询替换字符串中的subString,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35452885/