2016-09-03 5 views
1

Я хочу сохранить массив double[] как Blob в базе данных с Hibernate. Но когда я ознаменовал собственность как Lob, что-то вроде этого:Каков наилучший способ хранения массивов с Hibernate?

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

я получил ошибку D cannot be cast to java.sql.Blob. (Где для массива double[][] это работает ...) Итак, мой вопрос в том, как персидский массив dobule[] с Hibernate?

UPD Я забыл главное, извините ... Массив достаточно велик, несколько тысяч значений (более конкретные значения 5000-20000). И я хочу использовать параметр сжатия Blob из базы данных H2. Итак, мне нужен Lob, но не List.

UPD2 Другая деталь, это только для чтения.

+0

Есть ли конкретная причина, по которой вы не хотите сохранять его в виде списка ? –

+0

Я хотел бы знать, как это сделать ... чтобы сохранить массив двойников. Но я думал, что использование double [] вместо ArrayList будет более быстрым для манипуляций, которые я делаю с данными ... – sdorof

+0

В моей книге; рабочий путь всегда лучше, чем ни один рабочий путь. –

ответ

0

@Lob аннотаций не поддерживает двойной [] типа. Типы поддерживаемых @Lob являются:

  • java.sql.Clob, Character [], символ [] и java.lang.String -> сохраняется в базе данных Clob
  • java.sql. Blob, Byte [], байт [] и сериализуемые типы -> сохранялись в базе данных Blob

Что вы могли бы сделать, это создать пользовательские сериализации класса и использовать его вместо

@Entity 
class MyEntity { 
    @Lob 
    DoubleArray data; 
} 



public class DoubleArray implements Serializable { 

    private double[] data; 

    //constructor, getter and setter 

} 
Смежные вопросы