ColdFusion 9 ORM关系映射

时间:2011-12-29 19:52:22

标签: hibernate orm coldfusion

我正在尝试使用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写入用户表,以便我可以链接回公司。在这个插入中我不想在公司表中插入任何内容。我只想写入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);

    }

当我运行它时,我得到此错误“无法从companyID类型的对象中检索属性java.lang.String的值。预期的对象类型是公司。”

我想也许我需要为companyID提供单独的属性,例如“property name =”companyID“ormType =”int“,然后我可以使用”newUser.setCompanyID(#FORM.companyID#);“in EntitySave但是不起作用。我在ORMReload()上得到一个错误;当我在那里有错误时。

我显然对设置关系的最佳方式感到困惑。我可以在没有尝试正式引用user.cfc文件中的关系并且只使用属性name =“companyID”ormType =“int”的情况下工作,但这并没有给出表之间的正确关系。我想?

对此的任何帮助都会很棒。

提前致谢。

2 个答案:

答案 0 :(得分:5)

尝试更改此内容:

newUser.setCompanies(#FORM.companyID#);     

到此:

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

答案 1 :(得分:0)

  
    

最后一个“真实”是什么?除非您使用EntityLoad() -

,否则我认为不需要它   
EntityLoadByPK ("company", FORM.companyID)

返回一个数组,其中包含符合条件(pk=FORM.companyID)

的所有实体
EntityLoadByPK ("company", FORM.companyID, true)

返回符合条件(pk=FORM.companyID)

的对象