2016-07-04 9 views
4

私はこのようになり、永続CFCのカスタムプロパティを持っている:のColdFusion ORMは、Hibernate - 1対多のフィールドの最新のレコードを取得

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" 
; 

意図が認定レコードに参加することで、 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プロパティでこの結果を達成しますか?

答えて

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')); 
} 

とてもきれいますが、効果的ではありません。

関連する問題