У меня есть структура сущностей, которая выглядит следующим образом:
@Entity
public class Event {
@Id
private Long id;
@ManyToOne
private Device device;
@Column
private Severity severity;
... getters/setters/other attrs ...
}
@Entity
public class Device {
@Column
private Impact impact;
@ManyToOne
private PriorityMatrix priorityMatrix;
... getters/setters/other attrs ...
}
@Entity
public class Priority {
@EmbeddedId
private PriorityId id;
@Column
private Long value;
... getters/setters ...
}
@Embeddable
public class PriorityId {
@Column
private Severity severity;
@Column
private Impact impact;
@ManyToOne
private PriorityMatrix matrix;
... getters/setters ...
}
Воздействие и Серьезность - это перечисления с фиксированными значениями.
Могу ли я добавить «временный» атрибут «Приоритет» к объекту «Событие», который отображается с помощью матрицы воздействия и приоритета устройств и серьезности события? Если да, то как?
в SQL это были бы некоторые соединения, что-то вроде
SELECT priority_matrix.priority_value,
-- event attributes
-- device attributes
FROM event
INNER JOIN device ON { -- event x device join }
INNER JOIN priority_matrix ON {
device.priority_matrix_id = priority_matrix.id
AND device.impact = priority_matrix.impact
AND event.severity = priority_matrix.severity
}
Я хочу сделать это, потому что матрица приоритетов может обновляться и совместно использоваться различными устройствами, поэтому значение приоритета всегда должно быть получено при получении события, но я хочу загрузить значение приоритета в момент загрузки события.