2009-11-23 43 views
0

這怎麼可能用在CF9 Hibernate查詢語言沿着新的腳本語法改寫?ColdFusion9和腳本組件和HQL語法

<cfcomponent output="no"> 
<cffunction name="Login" output="no"> 
    <cfargument name="UsrName"> 
    <cfargument name="UsrPassword"> 

    <cfquery name="local.qry"> 
    SELECT * FROM UsrView 
    WHERE UsrName = <cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.UsrName#"> 
    AND UsrPassword = <cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.UsrPassword#"> 
    </cfquery> 
    <cfreturn local.qry> 
</cffunction> 
</cfcomponent> 
+0

你爲什麼試圖從Hibernate的視圖查詢? – yfeldblum 2009-11-23 02:38:39

+0

我允許數據庫通過定義具有所有連接的視圖來完成繁重的工作。然後我從視圖中選擇,而不是從tableA連接tableB中選擇。 – 2009-11-23 18:29:25

回答

2

這是你在追求什麼?

component{ 
    public query function Login(UsrName,UsrPassword){ 
    // get array of entities matching filter 
    var arrayOfUsers = EntityLoad('User',{ 
     UsrName=arguments.UsrName, UsrPassword=arguments.UsrPassword 
    }); 
    // convert entity array to a query object 
    return EntitytoQuery(arrayOfUsers); 
    } 
} 
+0

哇!這太妙了! 我不知道我是否應該返回arrayOfUsers而不是EntitytoQuery(arrayOfUsers)? 這是一個從頭開始的項目,所以我不需要維護遺留代碼或方法。 有什麼更好的方式來處理數據,現在從SQL SELECT語句來嗎?是arrayOfUsers還是EntitytoQuery(arrayOfUsers)? – 2009-11-23 18:27:49

+0

@cf_PhilipSenn它取決於。 :)如果您的實體中有您的視圖層可能需要調用的方法,則返回一組用戶。如果你需要填充類似cfselect的東西,那麼查詢就是要走的路。 – Henry 2009-11-23 20:06:11

+0

@cf_PhilipSenn我認爲CFQUERY比EntityToQuery()或HQL更有效。 – Henry 2009-11-23 20:06:54