Как использовать @Formula (в Hibernate) для ссылки на тот же (текущий) объект - PullRequest
5 голосов
/ 12 января 2012

У меня есть этот класс

@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.BUDGET и с текущим идентификатором объекта (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 голосов
/ 12 января 2012

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

@Formula("START_OV_DT")

См. Также:

0 голосов
/ 04 мая 2017

У меня есть таблица с общим количеством блоков. BITX_SESSION.TOTAL BLOCKS

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...