我希望将double[]
数组作为Blob
存储在具有Hibernate的数据库中。但是当我将该属性标记为Lob
时,就像这样:
@Entity
class MyEntity {
@Lob
double[] data;
}
我收到错误D cannot be cast to java.sql.Blob
。 (其中对于double[][]
数组这是有效的...)所以,我的问题是如何使用Hibernate来持久化dobule[]
数组?
UPD
我忘记了主要的事情,对不起......数组足够大,数千个值(更具体的5000-20000值)。我想使用Blob
数据库中的H2
压缩选项。所以,我需要Lob
,而不是List
。
UPD2 另一个细节,它是只读数组。
答案 0 :(得分:0)
在我看来,使用@ElementCollection
并让Hibernate处理优化是最好的:
@Entity
class MyEntity {
@ElementCollection
List<Double> data;
}
答案 1 :(得分:0)
@Lob 注释不支持 double [] 类型。 @Lob 支持的类型包括:
您可以做的是创建一个自定义的可序列化类并改为使用它
@Entity
class MyEntity {
@Lob
DoubleArray data;
}
public class DoubleArray implements Serializable {
private double[] data;
//constructor, getter and setter
}