[英]ColdFusion 9 ORM Relationship Mappings
我正在嘗試使用ColdFusion 9.0.1 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,以便可以鏈接回該公司。 在此插入上,我不想將任何內容插入到company表中。 我只想寫到用戶表,並使其通過用戶表中的companyID鏈接到公司表。
這是我的EntitySave代碼:
transaction{
newUser = EntityNew("user");
newUser.setCompanies(#FORM.companyID#);
newUser.setFirstName(#FORM.firstName#);
newUser.setLastName(#FORM.lastName#);
newUser.setUserName(#FORM.userName#);
EntitySave(newUser);
}
當我像這樣運行它時,我收到此錯誤“無法從companyID類型的對象檢索屬性java.lang.String的值。期望的對象類型為company。”
我在想,也許我需要為companyID擁有一個單獨的屬性,例如“ property name =“ companyID” ormType =“ int”,然后在EntitySave中使用“ newUser.setCompanyID(#FORM.companyID#);”,但是當我在那里有ORMReload()時,我得到一個錯誤。
我顯然對建立關系的最佳方法感到困惑。 我可以在不嘗試正式引用user.cfc文件中的關系並且僅使用屬性名=“ companyID”或ormType =“ int”的情況下進行此工作,但這並不能為我提供表之間的適當關系。 我認為?
任何幫助都會很棒。
提前致謝。
嘗試更改此:
newUser.setCompanies(#FORM.companyID#);
對此:
newUser.setCompanies(EntityLoadByPK ("company", FORM.companyID));
最后一個“真”是什么? 除非您使用EntityLoad(),否則我認為這不是必需的–
EntityLoadByPK ("company", FORM.companyID)
返回一個數組,其中包含符合條件的所有實體(pk=FORM.companyID)
EntityLoadByPK ("company", FORM.companyID, true)
返回符合條件的對象(pk=FORM.companyID)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.