@Entity
public class Device {
private long id;
private String deviceName; //column D_NAME
private Set<LoginDate> loginDates;
}
/**
Audit table being filled by some other processes on the network
*/
@Entity
public class LoginDate {
private long id; //pk
private String deviceName; //column D_NAME
private Date loginDate;
}
Моя цель - отобразить дату последнего входа в систему устройства на экранах отчетов; Я реализовал связь OneToMany между Device
и LoginDate
таблицами, где он использует OrderBy для упорядочения по убыванию loginDates, чтобы я мог выбрать первый элемент для отображения на экране. Но это немного дорогая операция, когда дело доходит до того, что количество логинов становится все больше и больше. Что я должен сделать, чтобы выбрать только последнюю дату входа в систему;
Я могу использовать @Formula
Hibernate для генерации Pojo через его
конструктор со связанными параметрами. Но это вызовет количество
выбирает каждый элемент на экране отчета.
Я могу реализовать другой метод на бизнес-уровне, чтобы после
список загружен; Я могу инициировать другой HQL с соответствующими D_NAMES для получения
D_NAME, loginDate соединяются и проходят через них. Который
один единственный выбор из БД, но отображение приложения для приложения
сторона.
Итак, у вас есть еще какие-нибудь вещи, чтобы я мог предложить что-то вроде запроса с объединениями для выбора Устройства и его последней даты входа в систему (не даты) сразу? Я думаю, что это должно как-то потребовать пункт where на сайте присоединения, но потом я врезался в стену и не мог понять, как это сделать.
Что вы предлагаете?
Кстати, я не опубликовал все свойства устройства, но, как вы могли понять, многие свойства там и большинство других свойств выбираются с помощью выбора с объединениями с другими связанными таблицами / объектами, используя HQL и LEFT OUTER. JOINS.