Joh*_*n P 9 postgresql hibernate
我有一个数据库表,看起来像:
创建表格答案( id int 不为空, question_id int 不为空, 回答文本空 )
该表最初是由 Hibernate 使用 @Lob 属性为“answer”列构建的。我当时没有意识到,但是当以这种方式设置时,Hibernate 在列中存储一个 OID 而不是实际文本。当我使用 Hibernate 检索值时一切正常,因为它会自动将 OID 转换为 CLOB 字符串,但是它正在成为一个性能问题,我想摆脱 OID。
从答案中选择 * ID QUESTION_ID 回答 ================================ 1 123 55123 2 234 51614 3 345 56127 应该 ID QUESTION_ID 回答 ================================ 1 123 男 2 234 203-555-1212 3 345 555 Main St. New York, NY
我的愿望是在表“ANSWER_VALUE TEXT”中添加一个额外的列并执行如下操作以将实际值放入表中,然后更改 Hibernate 以不使用 @Lob 指示符
更新答案集 ANSWER_VALUE= getValueFromOID(ANSWER)
那个“getValueFromOID”函数存在吗?如果没有,我能否得到一些关于如何创建一个或至少如何获取 OID 的实际值的指示?
谢谢
Joh*_*n P 10
感谢a_horse_with_no_name。解决办法是:
update answers set answer_value = lo_get(cast(value as bigint))
Run Code Online (Sandbox Code Playgroud)
注意 - 该lo_get
函数似乎存在于 Postgres 9.4 或更高版本中。对于早期版本,我没有看到直接执行此操作的方法。我目前正在运行 9.0,但这只是加快了我的升级计划。