2015-10-05 32 views
5

Bir sorgunun bir bytea girdisini bigint dosyasına çevirmem gerekiyor. Bu nasıl yapılabilir?postgresql: bytea 'yı bigint' e çevirme

Fazla Bilgi:

Ben aşağıda bir hazırda depo var - bytea olarak ve 'Sample_Table' beri

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

hazırda nasılsa (burada fıkra olarak) id alarak bu kimliği alanını alır bigint olarak ve böylece tür uyuşmazlığı sorunu atar.

Ben bigint için bytea dönüştürmek için CAST kullanarak denedi ama başarılı olamadı ve hata msg byteabigint için demir edilemez diyor.

bytea - bigint nasıl değiştirebilirim?


Düzenleme:

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 alan burada Long olarak tanımlanmıştır.


Düzenleme-2 birisi böyle sorunu alırsanız, büyük olasılıkla o sorguda boş değer geçiyor.

+0

You Sample_Table sınıfınızı da sağlamalıdır. Genellikle, id kimliğini uygun bir şekilde tanımlamamanızdır. – SWiggels

+0

'id' alanı, Uzun (bigint) olarak tanımlanmıştır. Emin değilim, neden 8 bit big int burada bayt dizisi olarak yorumlanır. –

+0

yükseltme, bir seçenek değil 9.4'e yükseltiyor? – SWiggels

cevap

0

düzgün yastıklı onaltılık dize gelen bit veri türü geçerek yerine, taban veri türü bytea (bellek öbek) diğer döküm için basit bir fonksiyonu olacak şekilde görünmüyor:

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