【发布时间】: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