Как использовать @Formula (in Hibernate) для ссылки на один и тот же (текущий) объект
У меня есть этот класс
@Entity
@Table(name = "DB.APPL_SESSION")
@AttributeOverrides({@AttributeOverride(name = "id", column = @Column(name = "APPL_SESSION_ID"))})
@SequenceGenerator(name = "TableSequence", sequenceName = "DB.APPL_SESSION_SQ")
public class AiSession{
@Formula("(select sum(nvl(budg.AMT_OV,budg.AMT)) from DB.BUDGET budg where budg.APPL_SESSION_ID = APPL_SESSION_ID)")
private LocalDate realSessionStartDate;
В приведенной выше формуле я работал с DB.Бюджетный объект и с текущим идентификатором объекта (APPL_SESSION_ID). Но теперь я хотел работать только со следующей переменной-членом (StartDate), которая находится в классе AidApplicantYearSession
@Basic
@Temporal(TemporalType.DATE)
@Column(name = "START_OV_DT")
private Date overrideStartDate;
Как я должен написать формулу, которая выглядит как выше, но использует только переменную-член объекта ? Я придумал
@Formula("(select START_OV_DT from DB.APPL_SESSION)")
Это правильный путь? Логика этих двух формул совершенно различна.
2 ответа:
@Formula
просто вставляется в предложение SQLselect
, так что вы можете использовать имена столбцов в нем:@Formula("START_OV_DT")
Смотрите также:
У меня есть таблица, которая имеет общее количество блоков BITX_SESSION.ВСЕГО БЛОКОВ
Теперь мне нужно вычислить процент от другой таблицы, которая имеет количество блоков, которые она получила BITX_SESSION_DEVICE.BLOCKS_RECEIVED Обе таблицы имеют session_id для идентификации сеанса, который мне нужен.
Вывод, который мне нужен, - это процент полученных блоков (BLOCKS_RECEIVED / TOTAL BLOCKS*100). Не знаю, как написать его с помощью формулы.