2012-01-16 10 views
5

¿Cómo puedo mapear una matriz de Dobles en JPA? Tengo el siguiente código que falla porque hibernate no puede inicializar la matriz.Asignación de matrices JPA

@Entity 
public class YearlyTarget extends GenericModel { 

    @Id 
    public Integer year; 

    @ElementCollection 
    public Double[] values; 

    public YearlyTarget(int year) { 
     this.year = year; 
     this.values = new Double[12]; 
    } 
} 

Respuesta

10

JPA no exige que se puedan persistir las matrices en una tabla separada; obviamente JDO lo hace pero luego has elegido no usar eso. En consecuencia, debe almacenarlos como @Lob o cambiar su tipo de java a una lista.

7

Use un tipo de objeto, como ArrayList. Ejemplo

@ElementCollection 
public ArrayList<Double> values; 

public YearlyTarget(int year) { 
    this.year = year; 
    this.values = new ArrayList<Double>(12); 
} 
+0

¿Quiere decir que las matrices no se pueden mapear directamente con jpa y que se debe usar una colección en su lugar? – emt14

+0

@ emt14 Las matrices simples serían un verdadero dolor en el culo para trabajar, si tiene una colección de valores que cambia con frecuencia. [Esta pregunta] (http://stackoverflow.com/questions/4332467/mapping-array-with-hibernate) aborda el mismo problema, con el mismo resultado: utilizar una colección. – tmbrggmn

+0

Las matrices también son la mejor opción de almacenamiento para un tipo de datos de longitud fija. Sin gastos generales en comparación con las colecciones. Usar la colección parece ser una solución al hecho de que jpa no persiste las matrices. – emt14

Cuestiones relacionadas