2011-12-29 134 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,以便我可以链接回公司。在这个插入我不想插入公司表的任何东西。我只想写入用户表,并通过users表中的companyID链接到公司表。

这里是我的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中的值不能从类型companyID的对象中检索希望的对象类型是公司。”我在想也许我需要为公司ID分开属性,如“property name =”companyID“ormType =”int“,然后也许我可以使用”newUser.setCompanyID(#FORM.companyID#);“在EntitySave中,但不起作用,我在ORMReload()上得到一个错误;当我有这个错误时

对于建立关系的最佳方式,我显然很困惑。正式引用user.cfc文件中的关系,只是使用属性名称=“companyID”ormType =“int”,但这并没有给我一个正确的表关系。很棒。

在此先感谢。

+0

不是'property name =“company”'如果只是一个多对一的更好吗? – Henry 2011-12-29 20:44:57

回答

5

尝试修改此:

newUser.setCompanies(#FORM.companyID#);  

这样:

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

感谢您的帮助。这并不奏效,但真正接近。这工作newUser.setCompanies(EntityLoadByPK(“公司”,FORM.companyID,真));现在有道理。谢谢! – Sequenzia 2011-12-29 20:18:17

+0

我会更新答案以显示对您有用的东西。很高兴你取得了一些进展。 – 2011-12-29 20:19:01

+0

最后的“真”是什么?我不认为这是必要的,除非你使用'EntityLoad()' – Henry 2011-12-29 20:43:03

0

什么是与最后一个 “真”?我不认为这是必要,除非你使用EntityLoad() -

EntityLoadByPK ("company", FORM.companyID) 

返回一个包含符合标准(pk=FORM.companyID)

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

所有实体数组返回一个对象符合到标准(pk=FORM.companyID)