0
我對Hibernate的一類:紅移DB,Hibernate所期待的龍,但發現的BigInteger
@lombok.Data
public class RedshiftRecord {
@Column(name = "ID")
private Long id;
}
在紅移此列中的相應類型/ Postgres的是BIGINT,這裏是SQL來源:
CREATE TABLE SAMPLE
(
id bigint distkey sortkey
);
BIGINT是一個帶符號的八字節整數。然而,當我嘗試運行這段代碼:
SQLQuery query = getSession().createSQLQuery("SELECT id FROM sample LIMIT 1");
query.setResultTransformer(Transformers.aliasToBean(RedshiftRecord.class));
RedshiftRecord record = (RedshiftRecord) query.uniqueResult();
我得到這個錯誤
org.hibernate.property.BasicPropertyAccessor: IllegalArgumentException in class: com.org.model.RedshiftRecord, setter method of property: id
org.hibernate.property.BasicPropertyAccessor: expected type: java.lang.Long, actual value: java.math.BigInteger
如果我改變ID如下:
private BigInteger id;
然後正常工作。有沒有辦法讓Hibernate做從Redshift/postgres BIGINT到Java Long的轉換? BIGINT的定義似乎比Java Long更接近Java BigIntger
我不希望使用BigIntegers來保存運行時/空間。
您首先面臨的具體問題是什麼?發佈代碼和異常堆棧跟蹤。 –
我添加了錯誤信息並更好地解釋了問題。 –
@JBNizet你有什麼想法嗎? –