2015-10-05 140 views
5

我必須將查詢的bytea條目轉換爲bigint。這怎麼能做到?postgresql:將bytea轉換爲bigint

更多信息:

我有如下一個hibernate庫 -

@Query(value = "update Sample_Table set other_id = ?1 where id = ?2", nativeQuery = true) 
void saveOrUpdateOtherId(Long other_id, Long id); 

休眠莫名其妙地服用id(在where子句中)爲bytea,自 'Sample_Table' 有這個id字段作爲bigint,因此它會引發類型不匹配問題。

我一直在使用CAST轉換byteabigint嘗試,但沒有成功和錯誤味精說:bytea不能被強制轉換爲bigint。如何將bytea更改爲bigint


編輯:

Sample_Table DAO:

@Table(name = "Sample_Table") 
public class Sample{ 
    @Id 
    @Column(name = "id", unique = true) 
    @GeneratedValue 
    private Long id; 

    @Column(name = "other_id") 
    private Long other_id; 
} 

id場在這裏只要定義。


編輯-2 如果有人得到這樣的問題,最有可能自己是個過客空值的查詢。

+0

你也應該提供你的Sample_Table類。通常這是因爲你沒有以合適的方式定義'id'。 – SWiggels

+0

'id'字段在這裏定義爲Long(bigint)。不確定,爲什麼8位大int在這裏被解釋爲字節數組。 –

+0

將postgres升級到9.4不是一個選項? – SWiggels

回答

0

它似乎並不是一個簡單的函數從BYTEA(內存塊)轉換爲基本數據類型,除通過位數據類型傳遞從正確填充十六進制字符串:

SELECT ('x'||lpad(encode('\001'::bytea, 'hex'), 16, '0'))::bit(64)::bigint