J'ai une structure de données qui se résume à:JPA Carte des cartes
class StylesheetUserPreferencesImpl {
long id;
String desc;
Map<String, Map<String, String>> nodeAttributes;
}
Pour essayer de faire la JPA2 annotations un peu plus sain d'esprit que j'ai créé petite classe pour représenter la classe interne:
class LayoutAttributeImpl {
String nodeId;
private Map<String, String> attributes;
}
ce qui me donne:
class StylesheetUserPreferencesImpl {
long id;
String desc;
Map<String, LayoutAttributeImpl> nodeAttributes;
}
ce que je voudrais à la fin est une structure de table qui ressemble à:
SS_USER_PREFS
PREFS_ID
DESC
SS_LAYOUT_ATTRS
PREFS_ID
NODE_ID
NAME
VALUE
Cependant, je ne suis pas vraiment sûr de savoir comment procéder pour mapper JPA. Il semble que je souhaite que LayoutAttributeImpl soit incorporable, mais pour autant que je sache, les objets Embeddable ne peuvent pas contenir de collections. Je l'ai maintenant travailler avec LayoutAttributeImpl agissant comme un @Entity à part entière, mais cela me donne une table supplémentaire dont je n'ai vraiment pas besoin.
Cela a du sens. Je suis en cours de refactoring mais je vais essayer dès que je le pourrai. Je cache déjà les attributs de la carte via des méthodes d'accesseur, donc cacher la clé de carte bizarre devrait être faisable. Je serai sûr de marquer la réponse comme acceptée une fois que je l'ai testé. J'espère que les crêpes étaient bonnes. – Eric
Cela a fonctionné, j'ai utilisé une méthode @PostLoad pour vider cette carte dans la carte>, car le code client doit faire beaucoup de recherche par nodeId pour les données connexes. Merci encore pour votre aide! –
Eric
Déplacement ingénieux avec le @PostLoad. –