У меня есть приложение, которое использует Hibernate для своих доменных объектов.Одна часть приложения является общей для нескольких приложений, и она не знает других систем.Для обработки отношений наш класс выглядит следующим образом:
@Entity
public class SystemEvent {
@Id @GeneratedValue
public int entity_id;
@Column(name="event_type")
public String eventType;
@Column(name="related_id")
public int relatedObjectId;
}
relatedObjectId
содержит внешний ключ для одного из нескольких различных объектов, в зависимости от типа события.Когда система хочет узнать о событиях, которые имеют отношение к ее интересам, она захватывает все системные события с помощью eventType «NewAccounts» или чего-то подобного, и она знает, что все эти relatedObjectIds являются идентификаторами объекта «Пользователь» или аналогичными.
К сожалению, это вызвало проблему в будущем.Я не могу найти способ рассказать Hibernate об этом отображении, что означает, что HQL-запросы не могут выполнять объединения.Мне бы очень хотелось создать HQL-запрос, который выглядит следующим образом:
SELECT users FROM SystemEvent event join Users newUsers where event.eventType = 'SignUp'
Однако Hibernate не знает о взаимоотношениях между SystemEvent и Users, и, насколько я могу судить, нет никакого способаскажи это.
Итак, вот мой вопрос: есть ли способ сообщить Hibernate об отношениях, когда ваши доменные объекты ссылаются друг на друга через идентификационные номера, а не ссылки на классы?