4

假设我有一个Page实体,它可以有一组关联的Document实体:一个简单的一对多关系。

<cfcomponent entityName="Page" persistent="true" table="pages">

  <!--- A Page can have many Documents --->
  <cfproperty name="document" fieldType="one-to-many" cfc="Document" fkColumn="pageID" inverse="true">

</cfcomponent>

但是,每个 Document 都需要知道其文件系统目录的路径,并且该属性的值可以根据上下文而变化,因此它不是持久的,需要在实例化时传入。

<cfcomponent entityName="Document" persistent="true" table="documents">

  <!--- This value needs to be set so the document knows its location --->
  <cfproperty name="directoryPath" persistent="false">

  <!--- Many Documents can belong to one Page --->
  <cfproperty name="page" fieldType="many-to-one" cfc="Page" fkColumn="pageID">

  <cffunction name="init" output="false">
    <cfreturn this/>
  </cffunction>

</cfcomponent>

如果我手动加载页面的文档数组或使用 Bean 工厂,我可以将directoryPath变量指定为传递给 Document init() 方法的参数。但是在这里,文档的加载是由 Hibernate 自动完成的。

当 ORM 加载相关对象时,有没有办法将 init 参数传递给相关对象?

我知道一旦加载并指定目录,我就可以遍历文档,这也许是最佳实践,但在 init 上将值传递给每个文档似乎更有效。可能吗?

4

1 回答 1

5

查看文档似乎没有办法按照您的要求进行操作。

我建议的一件事是,您可以在 Page 对象中设置一个属性并从 Document.xml 访问它,而不是遍历文档来设置属性。

因此,在加载 Page 后,您将拥有类似Page.setDocumentPath(documentPath);.

然后在显示文档时,您可能会有类似document.getPage().getDocumentPath();.

于 2012-10-18T15:22:11.193 回答