4

関連付けられたドキュメントエンティティの配列を持つことができるPageエンティティがあるとします単純な1対多の関係です。

<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>

ただし、各ドキュメントはそのファイルシステムディレクトリのパスを知っている必要があり、このプロパティの値はコンテキストによって異なる可能性があるため、永続的ではなく、インスタンス化時に渡す必要があります。

<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を使用してロードする場合、Document init()メソッドに渡される引数としてdirectoryPath変数を指定できます。ただし、ここでは、ドキュメントのロードはHibernateによって自動的に行われます。

ORMによってロードされるときに、関連するオブジェクトにinit引数を渡す方法はありますか?

ロードされたドキュメントをループしてディレクトリを指定できることはわかっています。おそらくそれがベストプラクティスですが、initでそれぞれに値を渡す方が効率的です。出来ますか?

4

1 に答える 1

5

ドキュメントを見ると、あなたが求めていることを実行する方法がないようです。

私が提案する1つのことは、ドキュメントをループしてプロパティを設定する代わりに、Pageオブジェクトにプロパティを設定し、Documentからアクセスすることです。

したがって、Pageをロードすると、のようなものになりPage.setDocumentPath(documentPath);ます。

次に、ドキュメントを表示するときに、のようなものを作成できますdocument.getPage().getDocumentPath();

于 2012-10-18T15:22:11.193 に答える