J'ai un schéma de base de données existant que j'essaie d'ORM avec les annotations JPA/Hibernate. Le schéma est conçu pour permettre aux clients d'associer des informations supplémentaires à chaque ligne d'une table. Plutôt que d'utiliser un modèle de valeur-clé , la solution existante détermine le nombre requis de colonnes dynamiques au moment de l'installation et modifie la table en pour ajouter des colonnes supplémentaires pour les champs dynamiques. En effet, chaque table a un ensemble de colonnes connues et fixes et un groupe de colonnes dynamiques.JPA/Hibernate mappage des colonnes dynamiques en tant que Liste d'objets
|table:X|
|id|known1|known2|dynamic1|dynamic2|..|dynamicx|
une table de paramètres indique quelles tables ont des champs dynamiques supplémentaires
|table:parameter|
|table|column|meta|
|x|dynamic1||
|x|dynamic2||
|x|dynamicx||
|y|dynamic15||
Dans la modélisation JPA cela, il est facile de créer une définition pour les colonnes fixes connues sur chaque table.
@Entity
@Table(name="x")
public class X
{
@Id
private Long id = null;
@Column(name="known1")
private Long known1 = null;
}
je prévois de modéliser la table des paramètres en tant que classe, et permettre à chacun de mes cours d'avoir une liste de paramètres. Je ne suis pas sûr de savoir comment procéder pour mapper cet objet List afin que les détails soient écrits dans la même table. Je crois que je peux utiliser une stratégie de dénomination personnalisée pour déterminer correctement le nom de la colonne pour le champ dynamique. Est-ce que ce type de cartographie est possible?
J'espère que vous êtes en mesure de changer la base de données ... cela ressemble à un schéma qui a besoin d'une normalisation. – Zoidberg
pour cette question supposons que je ne peux pas. Je pense que je suis proche de frapper le mur de briques. – emeraldjava