繁体   English   中英

使用Hibernate的商店数组的最佳方法是什么?

[英]What is the best way of store arrays with Hibernate?

我想将一个double[]数组作为Blob在具有Hibernate的数据库中。 但当我将该属性标记为Lob ,这样的事情:

@Entity
class MyEntity {
    @Lob
    double[] data;
}  

我得到错误D cannot be cast to java.sql.Blob (其中对于double[][]数组这是有效的...)所以,我的问题是如何使用Hibernate进行persis dobule[]数组?

UPD我忘记了主要的事情,对不起......数组足够大,数千个值(更具体的5000-20000值)。 我想使用H2数据库中的Blob压缩选项。 所以,我需要Lob ,但不需要List

UPD2另一个细节,它是只读数组。

在我看来,使用@ElementCollection并让Hibernate处理优化是最好的:

@Entity
class MyEntity {
    @ElementCollection
    List<Double> data;
}  

https://docs.jboss.org/hibernate/stable/annotations/reference/en/html_single/#entity-hibspec-collection

@Lob注释不支持double []类型。 @Lob支持的类型有:

  • java.sql.Clob,Character [],char []和java.lang.String - >作为Clob保存在数据库中
  • java.sql.Blob,Byte [],byte []和可序列化类型 - >作为Blob在数据库中持久化

你可以做的是创建一个自定义的可序列化类,然后使用它

@Entity
class MyEntity {
    @Lob
    DoubleArray data;
}  



public class DoubleArray implements Serializable {

    private double[] data;

    //constructor, getter and setter

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM