create table answers( id int not null, question_id int not null, answer text null )这个表最初是由Hibernate使用@Lob属性构建的,用于"answer"列。当时我没有意识到,但是以这种方式设置时,Hibernate会在列中存储一个OID而不是实际文本。当我使用Hibernate检索值时,一切都正常,因为它会自动将OID转换为CLOB字符串,但是这成为了性能问题,我想摆脱OID。
select * from answers ID QUESTION_ID ANSWER =============================== 1 123 55123 2 234 51614 3 345 56127 应该是 ID QUESTION_ID ANSWER =============================== 1 123 男性 2 234 203-555-1212 3 345 纽约市,555号主街我的愿望是在表"ANSWER_VALUE TEXT"中添加一个额外的列,并执行以下操作将实际值放入表中,然后修改Hibernate以不使用@Lob标识符。
update answers set ANSWER_VALUE= getValueFromOID(ANSWER)那个“getValueFromOID”函数存在吗?如果不存在,我能得到一些关于如何创建一个或者至少如何获取OID的实际值的指导吗? 谢谢。
loread()了吗?http://www.postgresql.org/docs/9.0/static/lo-funcs.html - user1822lo_read。 - Andriy Mupdate answers set answer_value = convert_from(lo_get(cast(value as bigint)), 'UTF8')- marioosh