2009-11-23 41 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