2012-01-16 20 views
5

Jak mogę odwzorować tablicę podwójną w WZP. Mam następujący kod, który nie działa, ponieważ hibernacja nie może zainicjować tablicy.Mapowanie matrycy 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]; 
    } 
} 

Odpowiedz

10

JPA nie upoważnia do utrzymywania tablic w oddzielnej tabeli; oczywiście JDO ma, ale wtedy zdecydowałeś się nie używać tego. W związku z tym należy albo zapisać je jako @Lob, albo zmienić typ Java na listę.

7

Użyj typu obiektu, takiego jak ArrayList. Przykład

@ElementCollection 
public ArrayList<Double> values; 

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

Czy masz na myśli, że tablic nie można mapować bezpośrednio za pomocą jpa i zamiast tego należy użyć kolekcji? – emt14

+0

@ emt14 Zwykłe tablice byłyby prawdziwym bólem w tyłku do pracy, jeśli masz kolekcję wartości, które często się zmieniają. [To pytanie] (http://stackoverflow.com/questions/4332467/mapping-array-with-hibernate) rozwiązuje ten sam problem, z tym samym wynikiem: użyj kolekcji. – tmbrggmn

+0

Tablice są również najlepszą opcją przechowywania dla danych o stałej długości. Bez kosztów ogólnych w porównaniu do kolekcji. Korzystanie z kolekcji wydaje się być obejściem faktu, że jpa nie zachowuje tablic. – emt14

Powiązane problemy