J'essaie de créer un tableau de bord pour une solution locale qui recueille les statistiques liées aux performances natives des serveurs d'applications. Voici le DDL pour les données collectées par divers agents. J'ai omis quelques colonnes et des tables non pertinentes pour la brièveté.Besoin d'aide pour le mappage Hibernate
create table server (
id integer not null auto_increment,
name varchar(50) not null,
primary key(id)
);
create table metric (
id integer not null auto_increment,
name varchar(50) not null,
primary key (id)
);
create table server_metric (
id integer not null auto_increment,
server_id integer not null,
metric_id integer not null,
constraint foreign key (server_fk) references server(id),
constraint foreign key (metric_fk) references metric(id),
primary key (id)
);
create table value (
id integer not null auto_increment,
server_metric_id integer not null,
value varchar(500) not null,
collect_time timestamp not null,
constraint foreign key (server_metric_fk) references server_metric(id)
primary key (id)
);
Le tableau de bord devrait permettre aux utilisateurs de visualiser des rapports basés sur une colonne (s) à partir de ces tableaux dans le cadre des critères. Je vais donc générer une requête Hibernate Criteria basée sur la sélection de l'utilisateur.
Quand j'Engineered inverse POJO, l'objet métrique ressemble à quelque chose comme ceci:
private long id;
private String name;
private Set serverMetrics = new HashSet(0);
... constructors, getters, setters truncated ...
Ce que je voudrais faire est d'exposer métrique comme POJO unique pour la relation de ces tableaux ci-dessus. Donc, essentiellement, vous pouvez obtenir le nom du serveur, la valeur, l'horodatage à travers le POJO métrique. Cela créera simplement la génération de requêtes Critères et l'ensemble de résultats sera toujours une liste d'objets métriques.
Je me suis référé à ce link - qui fonctionnerait bien pour une relation bi-univoque entre objets. Mais dans mon cas, la métrique a de un à plusieurs relations avec server_metric et ainsi de suite ... Je ne suis pas sûr de savoir comment mon fichier de mapping pour la table de métrique aurait l'air d'atteindre la même
Cheers !!
Je ne sais pas si c'est correct. Selon le livre Java Persistence with Hibernate (page 303), il existe deux façons d'ajouter des colonnes pour joindre des tables. J'ai testé avec l'annotation @Embedded (deuxième approche répertoriée dans le livre) et cela fonctionne parfaitement. –