2017-08-10 116 views
0

Usring SDR。我有一個基於連接表的實體PersonRole。對於報告,我希望連接表加入的兩個不同列之間的最短日期。我在Intranet現在的工作,所以她的是一些僞代碼...Spring Data Rest Hateos Return Extra Column

select 
pr, 
if pr.dateOne < pr.dateTwo then pr.dateOne else pr.dateTwo end as minDate 
from 
PersonRole pr 
... 

,我使用的DTO得到與我一起實體額外的數據時,我只在乎得到DTO數據並沒有HATEOAS相關數據。

基本上,我想是這樣的......

personRole : [ { 
person : { 
    dateOne: blah 
}, 
role : { 
    dateTwo: blah 
}, 
minDate: this is a min of person.dateOne and role.dateTwo 
}] 

回答

0

您可以添加新的方法,以你的實體,這將計算出的minDate,如:

@JsonProperty 
public Date getMinDate() { 
    if (dateOne < dateTwo) 
     return dateOne; 
    else 
     return dateTwo; 
} 

春季數據REST會挑使用這種方法並將它與您的實體一起序列化。

0

我可能有點晚,但這種功能可以通過投影和@Value註釋來實現。如果您按如下方式定義投影,它將起作用:

@Projection(name="report",types={PersonRole.class}) 
public interface PersonRoleProjection{ 

    @Value("target.dateOne < target.dateTwo ? target.dateOne : target.dateTwo") 
    Date getMinDate() 

    .... Define other getters here... 
}