我有一个我想用休眠(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/

10-13 09:48