ColdFusion9和脚本化组件以及hql语法

ColdFusion9和脚本化组件以及hql语法,coldfusion,Coldfusion,如何使用新的脚本语法以及CF9中的hibernate查询语言来重写 <cfcomponent output="no"> <cffunction name="Login" output="no"> <cfargument name="UsrName"> <cfargument name="UsrPassword"> <cfquery name="local.qry"> SELECT * FROM UsrV

如何使用新的脚本语法以及CF9中的hibernate查询语言来重写

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

从UsrView中选择*
其中UsrName=
和UsrPassword=

这就是你想要的吗

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

为什么要用Hibernate从视图中进行查询?我允许数据库通过定义包含所有连接的视图来完成繁重的工作。然后我从视图中选择而不是从表格中选择加入表格。哇!太棒了!我想知道是否应该返回ArrayFuser而不是EntitytoQuery(ArrayFuser)?这是一个从头开始的项目,所以我不需要维护遗留代码或方法。现在处理来自SQL Select语句的数据的更好方法是什么?是ArrayFuser还是EntitytoQuery(ArrayFuser)?@cf\u PhilipSenn这取决于:如果实体中有视图层可能需要调用的方法,则返回一个用户数组。如果您需要填充类似cfselect的内容,那么查询就是一种方法。@cf\u PhilipSenn和我认为CFQUERY比EntityToQuery()或HQL更有效。