2011-12-29 10 views
2

ColdFusion 9.0.1 ORMを使用してテーブル間の関係を定義しようとしています。ユーザーや企業ColdFusion 9 ORM関係マッピング

私は会社へのユーザーとの関係に取り組んでいます:

私は2つのテーブルを持っています。私はユーザテーブルへの書き込みで問題が生じています

component persistent="true" table="users" datasource="core" 
{ 
    property name="userID" fieldtype="id" column="userID" 
    setter="false" generator="native"; 

    property name="firstName" length="255"; 
    property name="lastName" length="255"; 
    property name="userName" length="45"; 

    property name="companies" fieldtype="many-to-one" cfc="company" 
    fkcolumn="companyID" singularname="company"; 

} 

component persistent="true" table="companies" datasource="core" 
{ 
    property name="companyID" fieldtype="id" column="companyID" 
    setter="false" generator="native"; 

    property name="companyName" length="255"; 
    property name="companyCode" length="45";; 

    property name="users" fieldtype="one-to-many" fkcolumn="userID" cfc="user" 
    cascade="all" inverse="true"; 


} 

:今、私はこれを持っています。会社にリンクするには、companyIDをuserテーブルに書き込む必要があります。このインサートでは、私は会社のテーブルに何も挿入しないようにします。私は、usersテーブルに書き込んで、usersテーブルのcompanyIDを介してcompaniesテーブルにリンクさせたいだけです。ここで

は私EntitySaveコードです:

transaction{ 

     newUser = EntityNew("user"); 

      newUser.setCompanies(#FORM.companyID#);  
      newUser.setFirstName(#FORM.firstName#); 
      newUser.setLastName(#FORM.lastName#); 
      newUser.setUserName(#FORM.userName#); 

     EntitySave(newUser); 

    } 

私はそのようにそれを実行すると、私はプロパティはjava.lang.Stringの値がタイプ企業IDのオブジェクトから取得することができません」このエラーが発生します予想されるオブジェクト型があります。会社。"

私は、この "property name =" companyID "ormType =" int "のようにcompanyIDのための別のプロパティを持つ必要があると思っていたかもしれないし、" newUser.setCompanyID(#FORM.companyID#); "エンティティセーブでは動作しませんが、ORMReload()でエラーが発生しました。

私は明らかに関係を設定する最良の方法について混乱しています。正式にuser.cfcファイルの関係を参照し、プロパティ名= "companyID" ormType = "int"を使用しても、テーブル間に適切な関係はありません。素晴らしいよ

ありがとうございます。これを変更

+0

が多対1の場合は、プロパティ名= "会社"より優れていますか? – Henry

答えて

5

試してみてください。これに

newUser.setCompanies(#FORM.companyID#);  

newUser.setCompanies(EntityLoadByPK ("company", FORM.companyID)); 
+0

助けてくれてありがとう。それは動作しませんでしたが、本当に近いです。これにより、newUser.setCompanies(EntityLoadByPK( "company"、FORM.companyID、true));今や意味をなさないありがとう! – Sequenzia

+0

私はあなたのために働いたものを表示するために答えを更新します。あなたが進歩を遂げてうれしいです。 –

+0

最後の "true"は何ですか?あなたが 'EntityLoad()'を使用しない限り、私はそれが必要とは思わない。 – Henry

0

最後の "真" とは何ですか?

EntityLoadByPK ("company", FORM.companyID) 

が基準(pk=FORM.companyID)

EntityLoadByPK ("company", FORM.companyID, true) 

に準拠するすべてのエンティティを含む配列を返す準拠オブジェクトを返します - 私はあなたがEntityLoad()を使用しない限り、必要とされているとは思いません(pk=FORM.companyID)

関連する問題