Comment puis-je mapper un tableau de doubles en JPA. J'ai le code suivant qui échoue car hibernate ne peut pas initialiser le tableau.
@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];
}
}
3 Réponses :
Utilisez un type d'objet, tel que ArrayList. Exemple
Voulez-vous dire que les tableaux ne peuvent pas être mappés directement avec JPA et une collection doit être utilisée à la place?
@ EMT14 Les tableaux simples seraient une véritable douleur dans le cul de travailler avec, si vous avez une collection de valeurs qui change fréquemment. Cette question s'attaque au même problème, avec le même résultat: utiliser une collection.
Les tableaux sont également la meilleure option de stockage pour un type de données de longueur fixe. Pas de surcharge par rapport aux collections. L'utilisation de la collection semble être une solution de contournement le fait que JPA ne persiste pas de tableaux.
@ EMT14 Je soupçonne que les implémentations JPA ne peuvent pas utiliser de réseau de proxy aussi facilement que des listes ou d'autres collections.
@ EMT14 Une arrayliste utilise une matrice comme stockage sous-jacent. Il n'y a pas beaucoup de surcharge lors de l'utilisation d'une arrayliste au lieu d'un tableau. Oui, le redimensionnement se produit, mais il n'a généralement pas d'impact énorme de la performance (dépend du contexte bien sûr). Voir aussi:
JPA ne manda pas de pouvoir persister les tableaux à une table séparée; De toute évidence, JDO ne fait que vous avez choisi de ne pas utiliser cela. Par conséquent, vous devez les stocker comme @LOB ou modifier votre type Java vers une liste. P>
votes
Vous ne spécifiez pas la structure de la base de données requise pour soutenir votre cartographie. Dans la base de données PostgreSQL, par exemple, vous pouvez stocker un tableau simple dans une colonne qui est possible pour mapper. Vous devrez inclure un dépendance : p> et votre définition d'entité ressemblera à: p> actuellement la bibliothèque ne prend en charge que l'INTS et des chaînes, mais c'est une tâche assez simple d'ajouter de nouveaux types. P> p> @ElementCollection CODE> s'appuie sur une table qui est associée à la récupération de la collection.