2015-10-05 10 views
5

クエリのbyteaエントリをbigintに変換する必要があります。これはどうすればできますか?postgresql:byteaをbigintに変換する

詳細:

私は以下のように休止状態のリポジトリを持っている -

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

'Sample_Tableが' このidフィールドを持っているので、Hibernateは何とかbyteaとして(where句で)idを取り、 bigintとなり、タイプミスマッチの問題が発生します。

キャストを使用してbyteabigintに変換しようとしましたが、エラーメッセージmsgがbigintにキャストできませんでした。

byteabigintに変更するにはどうすればよいですか?


編集:

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 誰かがこのような問題を取得する場合は、最も可能性が高い彼は、クエリでnull値を渡しています。

+0

あなたはSample_Tableクラスも提供する必要があります。通常は 'id'を適切な方法で定義しなかったからです。 – SWiggels

+0

'id'フィールドはここではLong(bigint)として定義されています。確かに、なぜ8ビットbig intがここでバイト配列として解釈されるのですか? –

+0

postgresを9.4にアップグレードするオプションはありませんか? – SWiggels

答えて

0

適切にパディングされた16進数文字列からビットデータ型を通過する以外、基本データ型にはbytea(メモリの塊)からキャストすることは簡単で機能していないようです:

SELECT ('x'||lpad(encode('\001'::bytea, 'hex'), 16, '0'))::bit(64)::bigint 
関連する問題