假设我有一个 Page 实体,该实体可以包含一系列关联的文档实体:简单的一对多关系。
<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 Factory加载页面文档数组,我可以将 directoryPath 变量指定为传递给Document init()方法的参数。但是在这里,文件的加载是由Hibernate自动完成的。
在ORM加载相关对象时,有没有办法将init参数传递给相关对象?
我知道我可以在加载后循环遍历文档并指定目录,也许这是最佳实践,但是在init上将值传递给每个文件似乎更有效。有可能吗?
答案 0 :(得分:5)
通过文档查看,似乎没有办法按照你的要求行事。
我建议的一件事是,不是循环遍历文档来设置属性,而是可以在Page对象中设置属性并从Document访问它。
因此,在加载页面后,您将拥有类似Page.setDocumentPath(documentPath);
的内容。
然后在显示文档时,您可以使用document.getPage().getDocumentPath();
。