【问题标题】:ColdFusion ORM cannot find CFCs when using virtual directoryColdFusion ORM 在使用虚拟目录时找不到 CFC
【发布时间】:2011-09-29 20:48:23
【问题描述】:

我有一些实体有关系:

component name="Store" persistent="true"
{
    property name="Products" fieldtype="one-to-many" cfc="Product";
}

component name="Product" persistent="true"
{
    property name="Store" fieldtype="many-to-one" cfc="Store";
}

上面的代码被简化了。我的项目位于C:\ColdFusion9\wwwroot\StoreTracker,一切正常。

但后来我不得不将它移动到一个虚拟目录。我将我的项目移至 C:\Projects\StoreTracker,但现在 ORM 不再工作,出现以下错误:

无法为 CFC 产品中的关系属性 Store 加载目标 CFC Store。

找不到 ColdFusion 组件或接口商店。

如果我通过使用完全限定名称:

property name="Store" fieldtype="many-to-one" cfc="entities.Store";

然后 ORM 工作。有谁知道为什么将它移动到虚拟目录会导致 ORM 在错误的文件夹中搜索持久实体,并且是否有更简单的方法来更改它正在搜索的文件夹,这样我就不必完全限定每个关系?

编辑:

这里是Application.cfc中的相关部分:

this.ormSettings = { cfclocation="entities" };

以及模型文件夹的文件夹结构:

C:\Projects\StoreTracker\entities

entities 文件夹下没有子文件夹,我所有的持久实体都在其中。

如果我将以下行添加到Application.cfc,我就能让它正常工作:

this.mappings["/entities"] = "C:\Projects\StoreTracker\entities";

虽然我不确定为什么会这样。没有它,如果实体只有简单的属性,CF ORM 似乎可以很好地读取它们,但是当存在关系时,它会说它找不到相关的 CFC。也许是一个错误?

【问题讨论】:

  • 请提供 Application.cfc 中的 ORM 配置内容。这可能是由于缺少设置的“cfclocation”属性,或者通过“保存映射”对 Hibernate 地图进行了积极缓存,但在显示设置之前无法确定。
  • @ShawnHolmes 我添加了更多信息。

标签: orm coldfusion coldfusion-9 cfc application.cfc


【解决方案1】:

如果虚拟目录是指在 Apache 或 IIS 中设置的虚拟目录,那么这是有道理的。这些虚拟目录存在于 Web 服务器中,而不是 ColdFusion 中。 CF对他们一无所知。

您可能需要为您的应用程序创建一个 ColdFusion 映射。我不确定您的应用程序的结构或放置 ORM 对象的确切位置,但您可能希望在伪构造器区域的 Application.cfc 中添加类似的内容。

<cfset application.mappings["/StoreTracker"] = "C:\Projects\StoreTracker" />

更新:哦,别忘了 ormReload()

【讨论】:

  • 谢谢,效果很好。我最终映射了保存实体的文件夹。
  • 这也有效 :) 随意编辑我的答案以反映实际有效的代码。
猜你喜欢
  • 2011-07-30
  • 2020-04-15
  • 1970-01-01
  • 2011-10-26
  • 2011-12-10
  • 1970-01-01
  • 1970-01-01
  • 2011-01-08
  • 1970-01-01
相关资源
最近更新 更多