我在持久性cfc中有一个自定义属性,如下所示:
property name="last_live_request"
fieldtype="one-to-many"
cfc="Accreditation"
fkcolumn="pers_ky"
setter="false"
orderby="ACCR_KY desc"
where="status_doma_ky in (27,28) and rownum = 1"
;
目的是加入一对多的认证记录,并仅检索最新的记录。问题是它不起作用。
与普通的PL_SQL一样,rownum在排序之前被评估,因此我没有得到最新的记录。
在普通的PL-SQL中解决这个问题的方法是做一个这样的子选择,这样我们先得到记录,然后选择最上面的记录:
select *
from (
select *
from JOU_V_REV_PEACC
where status_doma_ky in (27,28)
and pers_ky = [nnn]
order by ACCR_KY desc
)
where rownum = 1
所以我的问题是,如何在我的cfc属性中实现此结果?
答案 0 :(得分:3)
我找到了解决方法:
// Get the max id using the formula attribute (note, requires SQL, not HQL)
property name="LAST_LIVE_ACCR_KY" setter="false" formula="
select max(peac.accr_ky)
from JOU_V_REV_PEACC peac
where peac.status_doma_ky in (27,28)
and peac.pers_ky = PERS_KY
";
// Set up the property
property name="last_live_request" persistent="false" default="";
// Load the required Accreditation using a custom function
function getlast_live_request() {
return entityLoadByPK("Accreditation", this.attr('LAST_LIVE_ACCR_KY'));
}
不太好,但有效。