Как использовать @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 5

2 ответа:

@Formula просто вставляется в предложение SQL select, так что вы можете использовать имена столбцов в нем:

@Formula("START_OV_DT")

Смотрите также:

У меня есть таблица, которая имеет общее количество блоков BITX_SESSION.ВСЕГО БЛОКОВ

Теперь мне нужно вычислить процент от другой таблицы, которая имеет количество блоков, которые она получила BITX_SESSION_DEVICE.BLOCKS_RECEIVED Обе таблицы имеют session_id для идентификации сеанса, который мне нужен.

Вывод, который мне нужен, - это процент полученных блоков (BLOCKS_RECEIVED / TOTAL BLOCKS*100). Не знаю, как написать его с помощью формулы.