如何使用@Formula(在Hibernate中)引用相同的(当前)对象

时间:2012-01-11 20:12:17

标签: hibernate orm formula

我有这个班级

@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对象并使用当前对象id(APPL_SESSION_ID)。但现在我只想使用AidApplicantYearSession类中的下一个成员变量(StartDate)

@Basic
@Temporal(TemporalType.DATE)
@Column(name = "START_OV_DT")
private Date overrideStartDate;

我应该如何编写如上所示的公式,但只使用对象的成员变量?我想出了

 @Formula("(select START_OV_DT from DB.APPL_SESSION)")

这是正确的方法吗?这两个公式的逻辑完全不同。

2 个答案:

答案 0 :(得分:5)

@Formula只是插入到SQL select子句中,因此您可以在其中使用列名:

@Formula("START_OV_DT")

另见:

答案 1 :(得分:0)

我有一个表格,其总块数为BITX_SESSION.TOTAL BLOCKS

现在我需要计算另一个表的百分比,该表具有收到的块数BITX_SESSION_DEVICE.BLOCKS_RECEIVED 两个表都有session_id来标识我需要的会话。

我需要的输出是接收到的块的百分比(BLOCKS_RECEIVED / TOTAL BLOCKS * 100)。不知道如何使用公式编写它。