【问题标题】:Confused About Relationships and HQL Queries in CF ORM对 CF ORM 中的关系和 HQL 查询感到困惑
【发布时间】:2012-04-14 09:28:24
【问题描述】:

为简单起见,假设我有两个实体配置如下:

Topic.cfc

/**
 * @accessors true
 * @persistent true
 */
component {

    /**
     * @fieldtype id
     * @generator uuid
     * @sqltype varchar(35)
     */
    property topicID;

    /**
     * @type array
     * @fieldtype one-to-many
     * @cfc Response
     * @fkcolumn topicID
     * @singularname response
     */
    property responses;
}

Response.cfc

/**
 * @accessors true
 * @persistent true
 */
component {

    /**
     * @fieldtype id
     * @generator uuid
     * @sqltype varchar(35)
     */
    property responseID;

    /**
     * @type date
     * @ormtype timestamp
     */
    property responseTime;
}

我需要运行 HQL 查询(或者不,你告诉我...),它将返回指定日期范围内指定主题的所有响应。

我的查询目前如下所示:

var params = {
    'start' = startDate,
    'end' = endDate,
    'topicID' = topicID
};
var responses = ormExecuteQuery('
    from Response
    where responseTime >= :start
    and responseTime <= :end
    and Topic.topicID = :topicID
', params );

它返回以下错误:could not resolve property: Topic of: Response [ from Response as r where r.responseTime &gt;= :start and r.responseTime &lt;= :end and r.Topic.topicID = :topicID ]

我已经尝试加入:

from Response as r
join r.Topic as t
...

但这会导致同样的错误。不太确定从这里去哪里。提前致谢!

【问题讨论】:

    标签: hibernate orm coldfusion coldfusion-9


    【解决方案1】:

    所写的查询假定从响应到主题之间存在关系——根据您的代码,不存在这种关系。

    很确定,如果您将该关系添加到 Response,查询将起作用。

    【讨论】:

    • 啊,太容易了!我只是稍微切换了查询:from Topic as t join t.responses r where r.responseTime &gt;= :start and r&gt;responseTime &lt;= :end and t.topicID = :topicID。谢谢,斯科特!
    猜你喜欢
    • 2018-03-05
    • 2015-11-29
    • 2020-12-20
    • 2021-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-09
    • 1970-01-01
    相关资源
    最近更新 更多