Я пытаюсь создать панель мониторинга для собственного решения, которое собирает собственную статистику производительности серверов приложений. Вот DDL для данных, собранных различными агентами. Для краткости я пропустил несколько столбцов и не относящихся к делу таблиц.
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)
);
Панель инструментов должна позволять пользователям просматривать отчеты на основе любых столбцов из этих таблиц как часть критериев. Поэтому я сгенерирую запрос Hibernate Criteria на основе выбора пользователя.
Когда я обращаюсь к спроектированному POJO, объект Metric выглядит примерно так:
private long id;
private String name;
private Set serverMetrics = new HashSet(0);<br/>
... constructors, getters, setters truncated ...
Что я хотел бы сделать, так это выставить Metric как единственный POJO для взаимосвязи этих таблиц выше. Таким образом, по сути вы можете получить имя сервера, значение, метку времени через Metric POJO. Это будет просто генерация запросов Criteria, а набор результатов всегда будет списком объектов Metric.
Я ссылался на эту ссылку - которая прекрасно работала бы для отношений один-к-одному между объектами. Но в моем случае метрика имеет отношение один ко многим с server_metric и т. Д. ... Я не уверен, как мой файл сопоставления для таблицы метрик будет выглядеть так же
Буду признателен за любую помощь ...
Ура !!