让ORM在ColdFusion 9中工作

时间:2011-12-13 18:08:13

标签: orm coldfusion oracle11g

我在针对Oracle 11g数据库运行的ColdFusion应用程序中设置ORM(使用application.cfc中的Oracle10g方言),但是没有加载关系。这是我设置的映射。这是一个带有tag_category表中的外键的标记表:

<cfcomponent output="false" persistent="true" entityname="tag" table="tag">
    <cfproperty fieldtype="id" name="id" column="tag_id">
    <cfproperty fieldtype="column" name="tag_name" column="tag_name">
    <cfproperty fieldtype="column" name="tag_category_id" column="tag_category_id">     
    <cfproperty fieldtype="many-to-one" name="category" cfc="tag_category" fetch="join">
</cfcomponent>

这是tag_category表:

<cfcomponent output="false" persistent="true" entityname="tag_category" table="tag_category">
    <cfproperty fieldtype="id" name="id" column="tag_category_id">
    <cfproperty fieldtype="column" name="tag_category_name" column="tag_category_name">
</cfcomponent>

当我运行EntityLoad(“tag”)并转储结果时,我看到了标记表的内容,但category属性被列为空字符串。当我查看执行的SQL时,只有一个没有连接的简单查询。最后,当我打开savemapping并查看生成的Hibernate XML时,没有指定任何关系。这是怎么回事?我怎样才能让它发挥作用?

2 个答案:

答案 0 :(得分:2)

刚想通了。我在application.cfc中设置了savemapping =“true”,它生成了一批Hibernate XML配置文件。当我更新CFC时,ColdFusion仍然使用Hibernate XML文件作为配置源而不是更新的CFC。我假设每次执行ormReload()时都会重新生成XML文件,但它看起来不是。

答案 1 :(得分:0)

我认为您需要将延迟加载设置为false,因为默认情况下为true,如下所示:

<cfproperty fieldtype="many-to-one" name="category" cfc="tag_category" fetch="join" lazy="false">

查看cfdocs,延迟加载部分。